From 13e1a94be3d3928b1ed9ff8e094054e2897b3cb2 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Wed, 28 Oct 2020 00:16:38 +0100 Subject: [PATCH 1/8] uci: Backport security fixes This packports two security fixes from master. Signed-off-by: Hauke Mehrtens (cherry picked from commit f9005d4f80dee3dcc257d4613cbc46668faad094) --- ...arse_package-fix-heap-use-after-free.patch | 51 ++++++++ ...-file-Check-buffer-size-after-strtok.patch | 112 ++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 package/system/uci/patches/001-file-uci_parse_package-fix-heap-use-after-free.patch create mode 100644 package/system/uci/patches/002-file-Check-buffer-size-after-strtok.patch diff --git a/package/system/uci/patches/001-file-uci_parse_package-fix-heap-use-after-free.patch b/package/system/uci/patches/001-file-uci_parse_package-fix-heap-use-after-free.patch new file mode 100644 index 0000000000..47ea4e0ee6 --- /dev/null +++ b/package/system/uci/patches/001-file-uci_parse_package-fix-heap-use-after-free.patch @@ -0,0 +1,51 @@ +From a3e650911f5e6f67dcff09974df3775dfd615da6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20=C5=A0tetiar?= +Date: Sat, 3 Oct 2020 01:29:21 +0200 +Subject: [PATCH] file: uci_parse_package: fix heap use after free +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes following issue which is caused by usage of pointer which pointed +to a reallocated address: + + ERROR: AddressSanitizer: heap-use-after-free on address 0x619000000087 at pc 0x000000509aa7 bp 0x7ffd6b9c3c40 sp 0x7ffd6b9c3400 + READ of size 2 at 0x619000000087 thread T0 + #0 0x509aa6 in strdup (test-fuzz+0x509aa6) + #1 0x7fc36d2a1636 in uci_strdup util.c:60:8 + #2 0x7fc36d29e1ac in uci_alloc_generic list.c:55:13 + #3 0x7fc36d29e241 in uci_alloc_package list.c:253:6 + #4 0x7fc36d2a0ba3 in uci_switch_config file.c:375:18 + #5 0x7fc36d2a09b8 in uci_parse_package file.c:397:2 + #6 0x7fc36d2a09b8 in uci_parse_line file.c:513:6 + #7 0x7fc36d2a09b8 in uci_import file.c:681:4 + + 0x619000000087 is located 7 bytes inside of 1024-byte region [0x619000000080,0x619000000480) + freed by thread T0 here: + #0 0x51daa9 in realloc (test-fuzz+0x51daa9) + #1 0x7fc36d2a1612 in uci_realloc util.c:49:8 + + previously allocated by thread T0 here: + #0 0x51daa9 in realloc (test-fuzz+0x51daa9) + #1 0x7fc36d2a1612 in uci_realloc util.c:49:8 + +Reported-by: Jeremy Galindo +Signed-off-by: Petr Štetiar +--- + file.c | 2 +- + ...sig-06,src-000079,time-22005942,op-ext_AO,pos-8 | Bin 0 -> 56 bytes + 2 files changed, 1 insertion(+), 1 deletion(-) + create mode 100644 tests/fuzz/corpus/id-000000,sig-06,src-000079,time-22005942,op-ext_AO,pos-8 + +--- a/file.c ++++ b/file.c +@@ -387,8 +387,8 @@ static void uci_parse_package(struct uci + pctx->pos += strlen(pctx_cur_str(pctx)) + 1; + + ofs_name = next_arg(ctx, true, true, true); +- name = pctx_str(pctx, ofs_name); + assert_eol(ctx); ++ name = pctx_str(pctx, ofs_name); + if (single) + return; + diff --git a/package/system/uci/patches/002-file-Check-buffer-size-after-strtok.patch b/package/system/uci/patches/002-file-Check-buffer-size-after-strtok.patch new file mode 100644 index 0000000000..463bb3adf0 --- /dev/null +++ b/package/system/uci/patches/002-file-Check-buffer-size-after-strtok.patch @@ -0,0 +1,112 @@ +From eae126f66663e5c73e5d290b8e3134449489340f Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 4 Oct 2020 17:14:49 +0200 +Subject: [PATCH] file: Check buffer size after strtok() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes a heap overflow in the parsing of the uci line. + +The line which is parsed and put into pctx->buf is null terminated and +stored on the heap. In the uci_parse_line() function we use strtok() to +split this string in multiple parts after divided by a space or tab. +strtok() replaces these characters with a NULL byte. If the next byte is +NULL we assume that this NULL byte was added by strtok() and try to +parse the string after this NULL byte. If this NULL byte was not added +by strtok(), but by fgets() to mark the end of the string we would read +over this end of the string in uninitialized memory and later over the +allocated buffer. + +Fix this problem by storing how long the line we read was and check if +we would read over the end of the string here. + +This also adds the input which detected this crash to the corpus of the +fuzzer. + +Signed-off-by: Hauke Mehrtens +[fixed merge conflict in tests] +Signed-off-by: Petr Štetiar +--- + file.c | 19 ++++++++++++++++--- + tests/cram/test-san_uci_import.t | 1 + + tests/cram/test_uci_import.t | 1 + + .../2e18ecc3a759dedc9357b1298e9269eccc5c5a6b | 1 + + uci_internal.h | 1 + + 5 files changed, 20 insertions(+), 3 deletions(-) + create mode 100644 tests/fuzz/corpus/2e18ecc3a759dedc9357b1298e9269eccc5c5a6b + +--- a/file.c ++++ b/file.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include "uci.h" + #include "uci_internal.h" +@@ -63,6 +64,7 @@ __private void uci_getln(struct uci_cont + return; + + ofs += strlen(p); ++ pctx->buf_filled = ofs; + if (pctx->buf[ofs - 1] == '\n') { + pctx->line++; + return; +@@ -120,6 +122,15 @@ static inline void addc(struct uci_conte + *pos_src += 1; + } + ++static int uci_increase_pos(struct uci_parse_context *pctx, size_t add) ++{ ++ if (pctx->pos + add > pctx->buf_filled) ++ return -EINVAL; ++ ++ pctx->pos += add; ++ return 0; ++} ++ + /* + * parse a double quoted string argument from the command line + */ +@@ -384,7 +395,8 @@ static void uci_parse_package(struct uci + char *name; + + /* command string null-terminated by strtok */ +- pctx->pos += strlen(pctx_cur_str(pctx)) + 1; ++ if (uci_increase_pos(pctx, strlen(pctx_cur_str(pctx)) + 1)) ++ uci_parse_error(ctx, "package without name"); + + ofs_name = next_arg(ctx, true, true, true); + assert_eol(ctx); +@@ -416,7 +428,8 @@ static void uci_parse_config(struct uci_ + } + + /* command string null-terminated by strtok */ +- pctx->pos += strlen(pctx_cur_str(pctx)) + 1; ++ if (uci_increase_pos(pctx, strlen(pctx_cur_str(pctx)) + 1)) ++ uci_parse_error(ctx, "config without name"); + + ofs_type = next_arg(ctx, true, false, false); + type = pctx_str(pctx, ofs_type); +@@ -466,7 +479,8 @@ static void uci_parse_option(struct uci_ + uci_parse_error(ctx, "option/list command found before the first section"); + + /* command string null-terminated by strtok */ +- pctx->pos += strlen(pctx_cur_str(pctx)) + 1; ++ if (uci_increase_pos(pctx, strlen(pctx_cur_str(pctx)) + 1)) ++ uci_parse_error(ctx, "option without name"); + + ofs_name = next_arg(ctx, true, true, false); + ofs_value = next_arg(ctx, false, false, false); +--- a/uci_internal.h ++++ b/uci_internal.h +@@ -33,6 +33,7 @@ struct uci_parse_context + const char *name; + char *buf; + int bufsz; ++ size_t buf_filled; + int pos; + }; + #define pctx_pos(pctx) ((pctx)->pos) From cb548efbad8bec2c609b43a0b560865bd835f304 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 29 Oct 2020 22:14:27 +0800 Subject: [PATCH 2/8] default-settings: add a warning --- package/lean/default-settings/files/zzz-default-settings | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/lean/default-settings/files/zzz-default-settings b/package/lean/default-settings/files/zzz-default-settings index e088589d25..1b37e0097a 100755 --- a/package/lean/default-settings/files/zzz-default-settings +++ b/package/lean/default-settings/files/zzz-default-settings @@ -40,11 +40,13 @@ sed -i 's|root:x:0:0:root:/root:/bin/ash|root:x:0:0:root:/root:/bin/bash|g' /etc sed -i '/option disabled/d' /etc/config/wireless sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh +# NEVER DROP THE EXISTING AUTHORS INFO | 禁止删除现有作者信息 sed -i '/DISTRIB_REVISION/d' /etc/openwrt_release echo "DISTRIB_REVISION='| Mod20.10 by CTCGFW'" >> /etc/openwrt_release sed -i '/DISTRIB_DESCRIPTION/d' /etc/openwrt_release echo "DISTRIB_DESCRIPTION='OpenWrt 18.06 by Lean '" >> /etc/openwrt_release +# NEVER DROP THE EXISTING AUTHORS INFO | 禁止删除现有作者信息 sed -i 's/LuCI openwrt-18.06 branch/LuCI 18.06 by Lean/g' /usr/lib/lua/luci/version.lua sed -i '/luciversion/d' /usr/lib/lua/luci/version.lua echo 'luciversion = "Mod20.10 by CTCGFW"' >> /usr/lib/lua/luci/version.lua From 6b1af4160618353e0c3c34218f9d98690896d066 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 29 Oct 2020 22:30:24 +0800 Subject: [PATCH 3/8] luci-theme-edge: bump to 2.2 --- package/ctcgfw/luci-theme-edge/Makefile | 4 +- .../htdocs/luci-static/edge/cascade.css | 5003 +++++++++-------- .../luasrc/view/themes/edge/header.htm | 11 - .../luasrc/view/themes/edge/header_login.htm | 36 +- .../luasrc/view/themes/edge/sysauth.htm | 39 +- .../root/etc/uci-defaults/30_luci-theme-edge | 0 6 files changed, 2772 insertions(+), 2321 deletions(-) mode change 100755 => 100644 package/ctcgfw/luci-theme-edge/root/etc/uci-defaults/30_luci-theme-edge diff --git a/package/ctcgfw/luci-theme-edge/Makefile b/package/ctcgfw/luci-theme-edge/Makefile index 8033c7c2ea..abfe420d77 100644 --- a/package/ctcgfw/luci-theme-edge/Makefile +++ b/package/ctcgfw/luci-theme-edge/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Edge Theme LUCI_DEPENDS:= -PKG_VERSION:=2.1 -PKG_RELEASE:=20200914 +PKG_VERSION:=2.2 +PKG_RELEASE:=20201029 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/package/ctcgfw/luci-theme-edge/htdocs/luci-static/edge/cascade.css b/package/ctcgfw/luci-theme-edge/htdocs/luci-static/edge/cascade.css index 9b18e1cf96..e0ab483a10 100644 --- a/package/ctcgfw/luci-theme-edge/htdocs/luci-static/edge/cascade.css +++ b/package/ctcgfw/luci-theme-edge/htdocs/luci-static/edge/cascade.css @@ -28,16 +28,15 @@ * Icon Css and Fonts */ @font-face { - font-family: 'Google Sans'; + font-family: 'Google Sans'; src: url('data:application/font-woff;charset=utf-8;base64,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') format('woff'); font-weight: normal; font-style: normal; } - @font-face { - font-family: 'argon'; + font-family: 'argon'; src: url('fonts/argon.woff') format('woff'); font-weight: normal; font-style: normal; @@ -47,307 +46,370 @@ [class^="icon-"], [class*=" icon-"] { /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + a { - color: #5A8DEE; - text-decoration: none; - background-color: transparent; + color: #5A8DEE; + text-decoration: none; + background-color: transparent; } + *::-webkit-scrollbar:hover { - background-color: rgba(100, 100, 100, .09); + background-color: rgba(100, 100, 100, .09); } *::-webkit-scrollbar-thumb:vertical { - background: rgba(100, 100, 100, .5); - -webkit-border-radius: 100px; + background: rgba(100, 100, 100, .5); + -webkit-border-radius: 100px; } *::-webkit-scrollbar-thumb:vertical:active { - background: rgba(100, 100, 100, .61); - -webkit-border-radius: 100px; + background: rgba(100, 100, 100, .61); + -webkit-border-radius: 100px; } *::-webkit-scrollbar { - width: 0.5em !important; - overflow: visible; - border-radius: 4px; - -webkit-border-radius: 4px; + width: 0.5em !important; + overflow: visible; + border-radius: 4px; + -webkit-border-radius: 4px; } *::-webkit-scrollbar-track { - opacity: 0; - -webkit-transition: all .5s; + opacity: 0; + -webkit-transition: all .5s; } *::-webkit-scrollbar-thumb { - overflow: visible; - border-radius: 4px; - background: rgba(100, 100, 100, .2); + overflow: visible; + border-radius: 4px; + background: rgba(100, 100, 100, .2); } .icon-hello-world:before { - content: "\e90e"; + content: "\e90e"; } + .icon-expand_more:before { - content: "\e20b"; + content: "\e20b"; } + .icon-menu:before { - content: "\e20e"; + content: "\e20e"; } + .icon-favorite:before { - content: "\e291"; + content: "\e291"; } + .icon-spinner:before { - content: "\e603"; + content: "\e603"; } + .icon-delete:before { - content: "\e900"; + content: "\e900"; } + .icon-edit:before { - content: "\e901"; + content: "\e901"; } + .icon-use:before { - content: "\e902"; + content: "\e902"; } + .icon-loading:before { - content: "\e903"; + content: "\e903"; } + .icon-switch:before { - content: "\e904"; + content: "\e904"; } + .icon-error:before { - content: "\e905"; + content: "\e905"; } + .icon-dashboard:before { - content: "\e906"; + content: "\e906"; } + .icon-logout:before { - content: "\e907"; + content: "\e907"; } + .icon-Network:before { - content: "\e908"; + content: "\e908"; } + .icon-services:before { - content: "\e909"; + content: "\e909"; } + .icon-system:before { - content: "\e90a"; + content: "\e90a"; } + .icon-vpn:before { - content: "\e90b"; + content: "\e90b"; } + .icon-storage:before { - content: "\e90c"; + content: "\e90c"; } + .icon-statistics:before { - content: "\e90d"; + content: "\e90d"; } + .icon-angle-right:before { - content: "\e90f"; + content: "\e90f"; } + .icon-password:before { - content: "\e910"; + content: "\e910"; } + .icon-user:before { - content: "\e971"; + content: "\e971"; } + .icon-question:before { - content: "\f059"; + content: "\f059"; } + .sk-folding-cube { - position: absolute; - width: 40px; - height: 40px; - left: 50%; - top: 50%; - margin: -20px 0 0 -20px; - -webkit-transform: rotateZ(45deg); - transform: rotateZ(45deg); + position: absolute; + width: 40px; + height: 40px; + left: 50%; + top: 50%; + margin: -20px 0 0 -20px; + -webkit-transform: rotateZ(45deg); + transform: rotateZ(45deg); } + .sk-folding-cube .sk-cube { - float: left; - width: 50%; - height: 50%; - position: relative; - -webkit-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1); + float: left; + width: 50%; + height: 50%; + position: relative; + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); } + .sk-folding-cube .sk-cube:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: #5A8DEE; - -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both; - animation: sk-foldCubeAngle 2.4s infinite linear both; - -webkit-transform-origin: 100% 100%; - -ms-transform-origin: 100% 100%; - transform-origin: 100% 100%; + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #5A8DEE; + -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both; + animation: sk-foldCubeAngle 2.4s infinite linear both; + -webkit-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + transform-origin: 100% 100%; } + .sk-folding-cube .sk-cube2 { - -webkit-transform: scale(1.1) rotateZ(90deg); - transform: scale(1.1) rotateZ(90deg); + -webkit-transform: scale(1.1) rotateZ(90deg); + transform: scale(1.1) rotateZ(90deg); } + .sk-folding-cube .sk-cube3 { - -webkit-transform: scale(1.1) rotateZ(180deg); - transform: scale(1.1) rotateZ(180deg); + -webkit-transform: scale(1.1) rotateZ(180deg); + transform: scale(1.1) rotateZ(180deg); } + .sk-folding-cube .sk-cube4 { - -webkit-transform: scale(1.1) rotateZ(270deg); - transform: scale(1.1) rotateZ(270deg); + -webkit-transform: scale(1.1) rotateZ(270deg); + transform: scale(1.1) rotateZ(270deg); } + .sk-folding-cube .sk-cube2:before { - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; } + .sk-folding-cube .sk-cube3:before { - -webkit-animation-delay: 0.6s; - animation-delay: 0.6s; + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; } + .sk-folding-cube .sk-cube4:before { - -webkit-animation-delay: 0.9s; - animation-delay: 0.9s; + -webkit-animation-delay: 0.9s; + animation-delay: 0.9s; } + @-webkit-keyframes sk-foldCubeAngle { - 0%, + 0%, 10% { - -webkit-transform: perspective(140px) rotateX(-180deg); - transform: perspective(140px) rotateX(-180deg); - opacity: 0; - } - 25%, + -webkit-transform: perspective(140px) rotateX(-180deg); + transform: perspective(140px) rotateX(-180deg); + opacity: 0; + } + + 25%, 75% { - -webkit-transform: perspective(140px) rotateX(0deg); - transform: perspective(140px) rotateX(0deg); - opacity: 1; - } - 90%, + -webkit-transform: perspective(140px) rotateX(0deg); + transform: perspective(140px) rotateX(0deg); + opacity: 1; + } + + 90%, 100% { - -webkit-transform: perspective(140px) rotateY(180deg); - transform: perspective(140px) rotateY(180deg); - opacity: 0; - } + -webkit-transform: perspective(140px) rotateY(180deg); + transform: perspective(140px) rotateY(180deg); + opacity: 0; + } } + @keyframes sk-foldCubeAngle { - 0%, + 0%, 10% { - -webkit-transform: perspective(140px) rotateX(-180deg); - transform: perspective(140px) rotateX(-180deg); - opacity: 0; - } - 25%, + -webkit-transform: perspective(140px) rotateX(-180deg); + transform: perspective(140px) rotateX(-180deg); + opacity: 0; + } + + 25%, 75% { - -webkit-transform: perspective(140px) rotateX(0deg); - transform: perspective(140px) rotateX(0deg); - opacity: 1; - } - 90%, + -webkit-transform: perspective(140px) rotateX(0deg); + transform: perspective(140px) rotateX(0deg); + opacity: 1; + } + + 90%, 100% { - -webkit-transform: perspective(140px) rotateY(180deg); - transform: perspective(140px) rotateY(180deg); - opacity: 0; - } + -webkit-transform: perspective(140px) rotateY(180deg); + transform: perspective(140px) rotateY(180deg); + opacity: 0; + } } + .table { - position: relative; - display: table; + position: relative; + display: table; } + .tr { - display: table-row; + display: table-row; } + .thead { - display: table-header-group; + display: table-header-group; } + .tbody { - display: table-row-group; + display: table-row-group; } + .tfoot { - display: table-footer-group; + display: table-footer-group; } + .td, .th { - line-height: normal; - display: table-cell; - padding: 0.5em; - text-align: center; - vertical-align: middle; + line-height: normal; + display: table-cell; + padding: 0.5em; + text-align: center; + vertical-align: middle; } + .th { - font-weight: bold; + font-weight: bold; } + .tr.placeholder { - height: 4em; + height: 4em; } + .tr.placeholder > .td { - line-height: 3; - position: absolute; - right: 0; - bottom: 0; - left: 0; - padding: 0.4rem 0 !important; - text-align: center !important; - background: inherit; + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 0.4rem 0 !important; + text-align: center !important; + background: inherit; } + .td[width="33%"] { - padding: 1.1em 2rem; + padding: 1.1em 2rem; } + .table[width="33%"], .th[width="33%"], .td[width="33%"] { - width: 33%; + width: 33%; } + .table[width="100%"], .th[width="100%"], .td[width="100%"] { - width: 100%; + width: 100%; } + .col-1 { - flex: 1 1 30px !important; + flex: 1 1 30px !important; } + .col-2 { - flex: 2 2 60px !important; + flex: 2 2 60px !important; } + .col-3 { - flex: 3 3 90px !important; + flex: 3 3 90px !important; } + .col-4 { - flex: 4 4 120px !important; + flex: 4 4 120px !important; } + .col-5 { - flex: 5 5 150px !important; + flex: 5 5 150px !important; } + .col-6 { - flex: 6 6 180px !important; + flex: 6 6 180px !important; } + .col-7 { - flex: 7 7 210px !important; + flex: 7 7 210px !important; } + .col-8 { - flex: 8 8 240px !important; + flex: 8 8 240px !important; } + .col-9 { - flex: 9 9 270px !important; + flex: 9 9 270px !important; } + .col-10 { - flex: 10 10 300px !important; + flex: 10 10 300px !important; } + * { - box-sizing: border-box; - margin: 0; - padding: 0; + box-sizing: border-box; + margin: 0; + padding: 0; } + .h1, .h2, .h3, @@ -360,667 +422,736 @@ h3, h4, h5, h6 { - font-family: inherit; - font-weight: normal; - line-height: 1.1 !important; - color: inherit; + font-family: inherit; + font-weight: normal; + line-height: 1.1 !important; + color: inherit; } + html { - overflow-y: hidden; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; + overflow-y: hidden; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + body { -font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; -font-size: 0.82rem; - - color:#4d5156 + font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + font-size: 0.82rem; + color: #4d5156 } + html, body { - height: 100%; - margin: 0; - padding: 0; -overflow-x: hidden; + height: 100%; + margin: 0; + padding: 0; + overflow-x: hidden; } + select:first-child { - padding: 0.36rem 0.8rem; - color: #555; - background-color: #fff; - background-image: none; + padding: 0.36rem 0.8rem; + color: #555; + background-image: none; } -.cbi-value-field div{ - position:relative; + +.cbi-value-field div { + position: relative; } + .btn, button, select, input, .cbi-button, .cbi-dropdown { - color:#4d5156; - border: none; - border-bottom: 1px solid #9e9e9e; - outline: 0; - background-image: none; - box-shadow: none; - transition: box-shadow 0.15s ease; -} -input:not([type]), input[type=text]:not(.browser-default), input[type=password]:not(.browser-default), input[type=email]:not(.browser-default), input[type=url]:not(.browser-default), input[type=time]:not(.browser-default), input[type=date]:not(.browser-default), input[type=datetime]:not(.browser-default), input[type=datetime-local]:not(.browser-default), input[type=tel]:not(.browser-default), input[type=number]:not(.browser-default), input[type=search]:not(.browser-default), textarea.materialize-textarea { - background-color: transparent; - border: none; - border-bottom: 1px solid #9e9e9e; - border-radius: 0; - outline: none; - margin: 0; - padding: 0; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-box-sizing: content-box; - box-sizing: content-box; - transition: box-shadow .3s, border .3s; - + color: #4d5156; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: 0; + background-image: none; + box-shadow: none; + transition: box-shadow 0.15s ease; } -.cbi-value-field>div{ - position:relative; +input:not([type]), input[type=text]:not(.browser-default), input[type=password]:not(.browser-default), input[type=email]:not(.browser-default), input[type=url]:not(.browser-default), input[type=time]:not(.browser-default), input[type=date]:not(.browser-default), input[type=datetime]:not(.browser-default), input[type=datetime-local]:not(.browser-default), input[type=tel]:not(.browser-default), input[type=number]:not(.browser-default), input[type=search]:not(.browser-default), textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + margin: 0; + padding: 0; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: content-box; + box-sizing: content-box; + transition: box-shadow .3s, border .3s; } + +.cbi-value-field>div { + position: relative; +} + .focus-input { - position: absolute; - display: block; - width: 100%; - height: 100%; - top: 0; - left: 0; - pointer-events: none; + position: absolute; + display: block; + width: 100%; + height: 100%; + top: 0; + left: 0; + pointer-events: none; } + .focus-input::before { - content: ""; - display: block; - position: absolute; - top: 2.2rem; - left: 0; - width: 0; - height: 2px; - -webkit-transition: all 0.4s; - -o-transition: all 0.4s; - -moz-transition: all 0.4s; - transition: all 0.4s; - background: #5A8DEE; + content: ""; + display: block; + position: absolute; + top: 2.2rem; + left: 0; + width: 0; + height: 2px; + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; + background: #5A8DEE; } + select+.focus-input::before { top: 2.12rem; } + .node-main-login .focus-input::before { top: 2.73rem; } + input:focus + .focus-input::before,select:focus + .focus-input::before { - width: 100%; + width: 100%; } select, .cbi-dropdown { - width: inherit; - cursor: default; + width: inherit; + cursor: default; } + select:not([multiple="multiple"]):focus, input:not(.cbi-button):focus, .cbi-dropdown:focus { } + .cbi-dropdown, select[multiple="multiple"] { } + pre { - overflow: auto; + overflow: auto; } + code { - font-size: 1rem; - font-size-adjust: 0.35; - padding: 1px 3px; - color: #101010; - border-radius: 2px; - background: #ddd; + font-size: 1rem; + font-size-adjust: 0.35; + padding: 1px 3px; + color: #101010; + border-radius: 2px; + background: #ddd; } + abbr { - cursor: help; - text-decoration: underline; - color: #797474; + cursor: help; + text-decoration: underline; + color: #797474; } + hr { - margin: 1rem 0; - opacity: 0.1; - border-color: #eee; + margin: 1rem 0; + opacity: 0.1; + border-color: #eee; } + header, .main { - width: 100%; + width: 100%; } + footer { - font-size: 0.8rem; - overflow: hidden; - padding: 1rem; - text-align: right; - white-space: nowrap; - color: #aaa; - text-shadow: 0 0 2px #bbb; + font-size: 0.8rem; + overflow: hidden; + padding: 1rem; + text-align: right; + white-space: nowrap; + color: #aaa; + text-shadow: 0 0 2px #bbb; } + footer > a { - text-decoration: none; - color: #aaa; + text-decoration: none; + color: #aaa; } + small { - font-size: 90%; - line-height: 1.42857143; - white-space: normal; + font-size: 90%; + line-height: 1.42857143; + white-space: normal; } + .main { - position: relative; - top: 0; - bottom: 0; - overflow-y: auto; - height: 100%; + position: relative; + top: 0; + bottom: 0; + overflow-y: auto; + height: 100%; } + .main > .loading { - position: fixed; - z-index: 1000; - top: 0; - display: block; - width: 100%; - height: 100%; - pointer-events: none; - background-color: #f0f0f0; + position: fixed; + z-index: 1000; + top: 0; + display: block; + width: 100%; + height: 100%; + pointer-events: none; + background-color: #f0f0f0; } + .main > .loading > span { - font-family: monospace; - font-size: 2rem; - font-size-adjust: 0.35; - position: relative; - top: 12.5%; - display: block; - text-align: center; - color: #888; + font-family: monospace; + font-size: 2rem; + font-size-adjust: 0.35; + position: relative; + top: 12.5%; + display: block; + text-align: center; + color: #888; } + .main > .loading > span > .loading-img { - position: relative; - top: 0.1rem; - left: 0.05rem; - display: inline-block; - width: 1.25rem; - height: 1.25rem; - margin-right: 1rem; - animation: anim-rotate 2s infinite linear; - background: url(icons/spinner.svg) no-repeat center; + position: relative; + top: 0.1rem; + left: 0.05rem; + display: inline-block; + width: 1.25rem; + height: 1.25rem; + margin-right: 1rem; + animation: anim-rotate 2s infinite linear; + background: url(icons/spinner.svg) no-repeat center; } + @keyframes anim-rotate { - 0% { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - } - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } } -p{ - line-height:1.8rem; + +p { + line-height: 1.8rem; } + .main-left { - top: 0; - float: left; - width: 15%; - width: calc(0% + 15rem); - height: 100%; - background-color: #fff; - background-color: var(--menu-bg-color); - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); - transition: box-shadow .25s, -webkit-box-shadow .25s; - overflow-x: auto; - position: fixed; - z-index: 100; + top: 0; + float: left; + width: 15%; + width: calc(0% + 15rem); + height: 100%; + background-color: #fff; + background-color: var(--menu-bg-color); + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + transition: box-shadow .25s, -webkit-box-shadow .25s; + overflow-x: auto; + position: fixed; + z-index: 100; } + .main-left .sidenav-header { - padding: 1.5rem 0 0.6rem; - text-align: center; + padding: 1.5rem 0 0.6rem; + text-align: center; width: calc(0% + 13rem); } + .main-left .sidenav-header .brand { - font-size: 1.8rem; - color: #5A8DEE; - font-family: "TypoGraphica"; - text-decoration: none; - text-align: center; - cursor: default; - vertical-align: text-bottom; - white-space: nowrap; + font-size: 1.8rem; + color: #5A8DEE; + font-family: "TypoGraphica"; + text-decoration: none; + text-align: center; + cursor: default; + vertical-align: text-bottom; + white-space: nowrap; } -.brand img{ - width:180px; + +.brand img { + width: 180px; } + .main-right { - float: right; - width: 85%; - width: calc(100% - 15rem); - height: 100%; - transition: all 0.2s; - overflow-x: hidden; + float: right; + width: 85%; + width: calc(100% - 15rem); + height: 100%; + transition: all 0.2s; + overflow-x: hidden; } + .main-right > #maincontent { - position: relative; - z-index: 50; - margin-top: 2rem; + position: relative; + z-index: 50; + margin-top: 2rem; } + .pull-right { - float: right; + float: right; } + .pull-left { - float: left; + float: left; } + .nowrap:not(.td) { - white-space: nowrap; + white-space: nowrap; } [disabled="disabled"] { - pointer-events: none; + pointer-events: none; } + header { - color: #fff; - color: var(--header-color); - display:none; - + color: #fff; + color: var(--header-color); + display: none; } + header .fill { - padding: 0.8rem 0; -} -header .container { - height: 2rem; - padding: 0 1rem; -} -header .container .showSide { - display: none; - font-size: 1.4rem; -} -header .container .brand { - font-size: 1.5rem; - color: #fff; - font-family: "TypoGraphica"; - text-decoration: none; - padding-left: 1rem; - cursor: default; - vertical-align: text-bottom; - display: none; -} -header .container .pull-right { - float: right; - margin-top: 0rem; - display: flex; -} -header .fill .status { - position: absolute; - top: 25%; - right: 1em; - float: right; -} -header .fill .status * { - position: relative; - top: 0.2rem; - float: left; - margin-left: 0.3rem; - cursor: pointer; -} -#xhr_poll_status { - display: flex; - margin-left: 0.5rem; + padding: 0.8rem 0; } -.modal.alert-message{ - background-color: #5A8DEE; - color:#fff; +header .container { + height: 2rem; + padding: 0 1rem; } -.modal.alert-message p{ - font-weight:bold; - font-size:0.9rem; - text-align:center; + +header .container .showSide { + display: none; + font-size: 1.4rem; } -.modal .label.warning{ - background-color: #FDAC41 !important; - color:#fff !important; + +header .container .brand { + font-size: 1.5rem; + color: #fff; + font-family: "TypoGraphica"; + text-decoration: none; + padding-left: 1rem; + cursor: default; + vertical-align: text-bottom; + display: none; } + +header .container .pull-right { + float: right; + margin-top: 0rem; + display: flex; +} + +header .fill .status { + position: absolute; + top: 25%; + right: 1em; + float: right; +} + +header .fill .status * { + position: relative; + top: 0.2rem; + float: left; + margin-left: 0.3rem; + cursor: pointer; +} + +#xhr_poll_status { + display: flex; + margin-left: 0.5rem; +} + +.modal.alert-message { + background-color: #5A8DEE; + color: #fff; +} + +.modal.alert-message p { + font-weight: bold; + font-size: 0.9rem; + text-align: center; +} + +.modal .label.warning { + background-color: #FDAC41 !important; + color: #fff !important; +} + .danger,.error { - background-color: rgba(255, 91, 92, 0.2) !important; - color:#FF5B5C !important; + background-color: rgba(255, 91, 92, 0.2) !important; + color: #FF5B5C !important; } -.danger a,.error a{ - color:#FF5B5C !important; + +.danger a,.error a { + color: #FF5B5C !important; } + .warning { - background-color: rgba(253, 172, 65, 0.2) !important; - color:#FDAC41 !important; + background-color: rgba(253, 172, 65, 0.2) !important; + color: #FDAC41 !important; } -.warning a{ - color:#FDAC41 !important; + +.warning a { + color: #FDAC41 !important; } + .modal.warning { - color: #fff !important; - background-color:#FDAC41 !important; + color: #fff !important; + background-color: #FDAC41 !important; } + .success { - background-color: rgba(57, 218, 138, 0.2) !important; - color:#39DA8A !important; + background-color: rgba(57, 218, 138, 0.2) !important; + color: #39DA8A !important; } -.success a{ - color:#39DA8A !important; + +.success a { + color: #39DA8A !important; } + .alert, .alert-message { - font-weight: bold; - margin-bottom: 1em; - padding:0.7rem 1rem; - background:rgba(90, 141, 238, 0.2); - color: #5A8DEE; - border: 0; + font-weight: bold; + margin-bottom: 1em; + padding: 0.7rem 1rem; + background: rgba(90, 141, 238, 0.2); + color: #5A8DEE; + border: 0; } + .alert a, -.alert-message a{ - color: #5A8DEE; +.alert-message a { + color: #5A8DEE; } + .alert h4, .alert-message h4 { - padding: 0rem 1.5rem 0.75rem 0rem; + padding: 0rem 1.5rem 0.75rem 0rem; } + .alert .btn, .alert-message .btn { - height: auto; + height: auto; } + .alert-message > h4 { - font-size: 110%; - font-weight: bold; + font-size: 110%; + font-weight: bold; } .alert-message .btn { - padding: 0.3rem 0.6rem; + padding: 0.3rem 0.6rem; } + .container .alert, .container .alert-message { - margin-top: 1rem; + margin-top: 1rem; } /* * Main Menu */ .main .main-left { - transition: all 0.2s; + transition: all 0.2s; } + .main .main-left .nav { - margin-top: 0rem; + margin-top: 0rem; } + .main .main-left .nav li { - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + padding: 0.5rem 1rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .main .main-left .nav li a { - display: block; - color: #5f6368; - color: var(--menu-color); + display: block; + color: #5f6368; + color: var(--menu-color); } + .main .main-left .nav li.slide { - padding: 0; + padding: 0; } + .main .main-left .nav li.slide ul { - display: none; + display: none; } -.main .main-left .nav li.slide .menu { - display: block; - margin: 0.1rem 0.5rem 0.1rem 0.5rem; - padding: 0.675rem 0 0.675rem 2.5rem; - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - text-decoration: none; - cursor: default; - font-size: 1rem; - transition: all 0.2s; - position: relative; + +.main .main-left .nav>li>a { + display: block; + font-size: 0.9rem !important; + margin: 0.4rem 0.5rem !important; + padding: 0.5rem 0 0.5rem 2.5rem !important; + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; + text-decoration: none; + cursor: default; + transition: all 0.2s; + position: relative; } + .main .main-left .nav li.slide .menu.active { - color: #fff; - background: #5A8DEE; - + color: #fff; + background: #5A8DEE; } + .main .main-left .nav li.slide .menu.active::before { - color: #fff !important; + color: #fff !important; } + .main .main-left .nav li.slide .menu.active::after { - transform: rotate(90deg); - color: #fff !important; + transform: rotate(90deg); + color: #fff !important; } -.main .main-left .nav li.slide .menu:hover { - cursor: pointer; - color: #fff; - background: #5A8DEE; - + +.main .main-left .nav>li>a:hover { + cursor: pointer; + color: #fff; + background: #5A8DEE; } -.main .main-left .nav li.slide .menu:hover::before { - color: #fff !important; + +.main .main-left .nav>li>a:hover::before { + color: #fff !important; } -.main .main-left .nav li.slide .menu::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; + +.main .main-left .nav>li>a:first-child::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - padding-top: 3px; - transition: all 0.3s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; } + .main .main-left .nav li.slide .menu::after { - position: absolute; - right: 0.5rem; - top: 0.8rem; - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; + position: absolute; + right: 0.5rem; + top: 0.8rem; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; /* Better Font Rendering =========== */ - -moz-osx-font-smoothing: grayscale; - content: '\e90f'; - transition: all 0.15s ease; - color: #ced4da; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - transition: all 0.3s; + -moz-osx-font-smoothing: grayscale; + content: '\e90f'; + transition: all 0.15s ease; + color: #ced4da; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + transition: all 0.3s; } + .main .main-left .nav li.slide .menu[data-title=Status]:before { - content: "\e906"; - color: #5e72e4; + content: "\e906"; + color: #5e72e4; } + .main .main-left .nav li.slide .menu[data-title=System]:before { - content: "\e90a"; - color: #fb6340; + content: "\e90a"; + color: #fb6340; } + .main .main-left .nav li.slide .menu[data-title=Services]:before { - content: "\e909"; - color: #11cdef; + content: "\e909"; + color: #11cdef; } + .main .main-left .nav li.slide .menu[data-title=NAS]:before { - content: "\e90c"; - color: #f3a4b5; + content: "\e90c"; + color: #f3a4b5; } + .main .main-left .nav li.slide .menu[data-title=VPN]:before { - content: "\e90b"; - color: #8965e0; + content: "\e90b"; + color: #8965e0; } + .main .main-left .nav li.slide .menu[data-title=Network]:before { - content: "\e908"; - color: #8965e0; + content: "\e908"; + color: #8965e0; } + .main .main-left .nav li.slide .menu[data-title=Bandwidth_Monitor]:before { - content: "\e90d"; - color: #2dce89; + content: "\e90d"; + color: #2dce89; } + .main .main-left .nav li.slide .menu[data-title=Docker]:before { - content: "\e911"; - color: #6699ff; + content: "\e911"; + color: #6699ff; } + .main .main-left .nav li.slide .menu[data-title=Statistics]:before { - content: "\e913"; - color: #8965e0; + content: "\e913"; + color: #8965e0; } + .main .main-left .nav li.slide .menu[data-title=Control]:before { - content: "\e912"; - color: #5e72e4; + content: "\e912"; + color: #5e72e4; } + .main .main-left .nav li.slide .menu[data-title=Asterisk]:before { - content: "\e914"; - color: #fb6340; + content: "\e914"; + color: #fb6340; } -.main .main-left .nav li.slide .menu[data-title=Logout]:before { - content: "\e907"; - color: #adb5bd; + +.main .main-left .nav li a[data-title=Logout]:before { + content: "\e907"; + color: #adb5bd; } + .main .main-left .nav li.slide:hover { - background: none; + background: none; } + .main .main-left .nav li.slide .slide-menu { - margin: 0 0.5rem 0 2.5rem; - padding: 0rem 0.5rem; + margin: 0 0.5rem 0 2.5rem; + padding: 0rem 0.5rem; } + .main .main-left .nav li.slide .slide-menu li { - position: relative; - - border-radius: 2px; - margin: 0.2rem 0; - padding: 0.5rem 0rem; - background: none; + position: relative; + border-radius: 2px; + margin: 0.2rem 0; + padding: 0.5rem 0rem; + background: none; } + .main .main-left .nav li.slide .slide-menu li a { - white-space: nowrap; - text-decoration: none; -} -.main .main-left .nav li.slide .slide-menu li::after { - content: ""; - position: absolute; - left: 0; - bottom: 0; - width: 0; - height: 2px; - background-color: #5A8DEE; - transition: all 0.2s; -} -.main .main-left .nav li.slide .slide-menu li:hover { - background: none; -} -.main .main-left .nav li.slide .slide-menu li:hover::after { - width: 100%; -} -.main .main-left .nav li.slide .slide-menu .active { - background: none; - color: var(--menu-color); -} -.main .main-left .nav li.slide .slide-menu .active a { - color: var(--menu-color); -} -.main .main-left .nav li.slide .slide-menu .active::after { - content: ""; - position: absolute; - left: 0; - bottom: 0; - width: 100%; - height: 2px; - background-color: #5A8DEE; - transition: all 0.2s; -} -.main .main-left .nav li.slide .slide-menu .active:hover { - background: none; -} -.main .main-left .nav li.slide .slide-menu .active:hover::after { - width: 100%; -} -.lg { - margin: 0; - padding: 0 !important; -} -.logout { - display: block; - margin: 0.8rem 0.5rem 0.1rem 0.5rem; - padding: 0.675rem 0 0.675rem 2.5rem; - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - text-decoration: none; - font-size: 1rem; - transition: all 0.2s; - position: relative; -} -.logout:before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - padding-top: 3px; - transition: all 0.3s; - content: "\e907"; - color: #32325d !important; -} -body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before { - transition: transform 0.1s ease-in-out; -} -body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before { - transition: transform 0.2s ease-in-out; -} -.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before { - display: none; -} -#maincontent > .container { - margin: 1rem 0 1rem 0; - } -} -ul { - line-height: normal; -} -li { - list-style-type: none; -} -h1 { - font-size: 2rem; - padding-bottom: 10px; - border-bottom: thin solid #eee; -} -h2 { - font-size: 1.8rem; - padding: 1rem 2rem; -} -h3 { - font-size: 1.4rem; - margin: 0rem 0 0 0; - padding: 2rem 2rem 1.25rem 2rem; -} -h4 { - font-size: 1.2rem; - margin: 2rem 0 0 0; - padding: 0rem 2rem 0.75rem 2rem; -} -h5 { - font-size: 1rem; - margin: 2rem 0 0 0; - padding-bottom: 10px; + white-space: nowrap; + text-decoration: none; } +.main .main-left .nav li.slide .slide-menu li::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 0; + height: 2px; + background-color: #5A8DEE; + transition: all 0.2s; +} + +.main .main-left .nav li.slide .slide-menu li:hover { + background: none; +} + +.main .main-left .nav li.slide .slide-menu li:hover::after { + width: 100%; +} + +.main .main-left .nav li.slide .slide-menu .active { + background: none; + color: var(--menu-color); +} + +.main .main-left .nav li.slide .slide-menu .active a { + color: var(--menu-color); +} + +.main .main-left .nav li.slide .slide-menu .active::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #5A8DEE; + transition: all 0.2s; +} + +.main .main-left .nav li.slide .slide-menu .active:hover { + background: none; +} + +.main .main-left .nav li.slide .slide-menu .active:hover::after { + width: 100%; +} + +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before { + transition: transform 0.1s ease-in-out; +} + +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before { + transition: transform 0.2s ease-in-out; +} + +.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before { + display: none; +} + +#maincontent > .container { + margin: 1rem 0 1rem 0; +} + +ul { + line-height: normal; +} + +li { + list-style-type: none; +} + +h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; +} + +h2 { + font-size: 1.8rem; + padding: 1rem 2rem; +} + +h3 { + font-size: 1.4rem; + margin: 0rem 0 0 0; + padding: 2rem 2rem 1.25rem 2rem; +} + +h4 { + font-size: 1.2rem; + margin: 2rem 0 0 0; + padding: 0rem 2rem 0.75rem 2rem; +} + +h5 { + font-size: 1rem; + margin: 2rem 0 0 0; + padding-bottom: 10px; +} .cbi-section, .cbi-section-error, @@ -1032,168 +1163,195 @@ h5 { [data-tab-title], [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), [data-page="admin-system-opkg"] #maincontent > .container { - font-family: inherit; - font-weight: normal; - font-style: normal; - line-height: normal; - min-width: inherit; - margin: 1rem 0; - padding: 0rem; - border: 0; - background-color: #fff; + font-family: inherit; + font-weight: normal; + font-style: normal; + line-height: normal; + min-width: inherit; + margin: 1rem 0; + padding: 0rem; + border: 0; + background-color: #fff; } + .cbi-modal .cbi-section, .cbi-section .cbi-section { - padding: 0; - box-shadow: none; + padding: 0; + box-shadow: none; } + .cbi-modal .cbi-tabmenu { - margin-left: 0; + margin-left: 0; } + .cbi-map-descr, .cbi-section-descr { - font-size: small; - line-height: 2rem; - padding: 0 0 0.5rem 2rem; + font-size: small; + line-height: 2rem; + padding: 0 0 0.5rem 2rem; } -.cbi-section-node{ - padding-left:2rem; -} -.cbi-section .cbi-section-node{ - padding-left:0; -} -.cbi-section-descr { - color:#404040; +.cbi-section-node { + padding-left: 2rem; } + +.cbi-section .cbi-section-node { + padding-left: 0; +} + +.cbi-section-descr { + color: #404040; +} + .cbi-map-descr + fieldset { - margin-top: 1rem; + margin-top: 1rem; } + .cbi-map-descr > abbr { - cursor: help; - text-decoration: underline; + cursor: help; + text-decoration: underline; } + .cbi-section > legend { - display: none !important; + display: none !important; } + fieldset > fieldset, .cbi-section > .cbi-section { - margin: 0; - padding: 0; - border: 0; - box-shadow: none; + margin: 0; + padding: 0; + border: 0; + box-shadow: none; } + .cbi-section > h3:first-child, .panel-title { - font-size: 1.4rem; - line-height: 1; - display: block; - width: 100%; - margin: 0; - margin-bottom: 0; - padding: 1.25rem 2rem; - color: #32325d; - color: var(--gray-dark); + font-size: 1.4rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 1.25rem 2rem; + color: #32325d; + color: var(--gray-dark); } + .cbi-section > h3:first-child, .cbi-section > h4:first-child, .cbi-section > p:first-child, [data-tab-title] > h3:first-child, [data-tab-title] > h4:first-child, [data-tab-title] > p:first-child { - padding: 0.5rem; + padding: 0.5rem; } + table { - border-spacing: 0; - border-collapse: collapse; + border-spacing: 0; + border-collapse: collapse; } + table, .table { - overflow-y: hidden; - width: 100%; + overflow-y: hidden; + width: 100%; } .container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td { - padding: 0.6rem; + padding: 0.6rem; } + .cbi-section-table-cell { - line-height: 1.1; - align-self: flex-end; - flex: 1 1 auto; + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; } + tr > td, tr > th, .tr > .td, .tr > .th, .cbi-section-table-row::before, #cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { - padding: 1rem 1rem 1rem 1rem; + padding: 1rem 1rem 1rem 1rem; } + #cbi-wireless .td, #cbi-network .tr:first-child > .td, .table[width="100%"] > .tr:first-child > .td, [data-page="admin-network-diagnostics"] .tr > .td, .tr.table-titles > .th, .tr.cbi-section-table-titles > .th { - border-top: 0 !important; - padding: 1.1em 1rem; - line-height: 1.3rem; + border-top: 0 !important; + padding: 1.1em 1rem; + line-height: 1.3rem; } -.cbi-tab-descr{ - padding:1rem; + +.cbi-tab-descr { + padding: 1rem; } .table[width="100%"] > .tr:first-child > .td { - margin: auto 0; + margin: auto 0; } + .cbi-section-table-row { - margin-bottom: 1rem; - text-align: center !important; + margin-bottom: 1rem; + text-align: center !important; } + .cbi-section-table-row:last-child { - margin-bottom: 0; + margin-bottom: 0; } + .cbi-section-table-row > .cbi-value-field .cbi-dropdown, .cbi-section-table-row > .cbi-value-field .cbi-input-select, .cbi-section-table-row > .cbi-value-field .cbi-input-text, .cbi-section-table-row > .cbi-value-field .cbi-input-password { - width: 100%; - min-width:0 !important; + width: 100%; + min-width: 0 !important; } + .cbi-section-table-row > .cbi-value-field [data-dynlist] > input, .cbi-section-table-row > .cbi-value-field input.cbi-input-password { - width: calc(100% - 1.5rem); + width: calc(100% - 1.5rem); } + .cbi-section-table-row .td { - text-align: center !important; + text-align: center !important; } table > tbody > tr, div > .table > .tr,.cbi-map >.cbi-section .cbi-value { - background-color: #fff; - transition: background-color .25s + transition: background-color .25s } + table > tbody > tr:nth-of-type(4n+2), div > .table > .tr:nth-of-type(4n+2),.cbi-map >.cbi-section .cbi-value:nth-of-type(2n) { -background-color: #e5effd; + background-color: #e5effd; } + table > tbody > tr:nth-of-type(4n+2):hover, div > .table > .tr:nth-of-type(4n+2):hover { - background-color: #d9e9ff; + background-color: #d9e9ff; } + table > tbody > tr:nth-of-type(4n), div > .table > .tr:nth-of-type(4n) { - background-color: rgba(223, 56, 18, 0.04); + background-color: rgba(223, 56, 18, 0.04); } + table > tbody > tr:nth-of-type(4n):hover, div > .table > .tr:nth-of-type(4n):hover { - background-color: rgba(223, 56, 18, 0.09); + background-color: rgba(223, 56, 18, 0.09); } + .cbi-map >.cbi-section .cbi-value:nth-of-type(2n) { -background-color: #e5effdb8; + background-color: #e5effdb8; } + .cbi-map >.cbi-section .cbi-value:nth-of-type(2n):hover { -background-color: #e5effd; + background-color: #e5effd; } /* fix multiple table */ @@ -1205,51 +1363,54 @@ td > table > tbody > tr > td, .td > .table > .tbody > .tr > .td, .cbi-value-field > table > tbody > tr > td, .cbi-value-field > .table > .tbody > .tr > .td { - border: 0; + border: 0; } /* button style */ .btn, .cbi-button, .item::after { - font-size: 0.8rem; - display: inline-block; - width: auto !important; - padding: 0 0.8rem; - cursor: pointer; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - transition: all 0.2s ease-in-out; - text-align: center; - vertical-align: middle; - text-decoration: none; - text-transform: uppercase; - color: #fff; - border: 0; - border-radius: 0.2rem; - background-image: none; - -webkit-appearance: none; - -ms-touch-action: manipulation; - touch-action: manipulation; + font-size: 0.8rem; + display: inline-block; + width: auto !important; + padding: 0 0.8rem; + cursor: pointer; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all 0.2s ease-in-out; + text-align: center; + vertical-align: middle; + text-decoration: none; + color: #fff; + border: 0; + border-radius: 0.2rem; + background-image: none; + -webkit-appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; } + .cbi-button-up, .cbi-button-down { - font-size: 1.2rem; - display: inline-block; - min-width: 0; - padding: 0.2rem 0.3rem; - color: transparent !important; - background: url(icons/arrow.svg) no-repeat center; - background-size: 12px 20px; + font-size: 1.2rem; + display: inline-block; + min-width: 0; + padding: 0.2rem 0.3rem; + color: transparent !important; + background: url(icons/arrow.svg) no-repeat center; + background-size: 12px 20px; } + .cbi-button-up { - transform: scaleY(-1); + transform: scaleY(-1); } + .cbi-button:not(select) { - -webkit-appearance: none !important; + -webkit-appearance: none !important; } + .btn:hover, .btn:focus, .btn:active, @@ -1262,9 +1423,10 @@ td > table > tbody > tr > td, .cbi-page-actions .cbi-button-apply + .cbi-button-save:hover, .cbi-page-actions .cbi-button-apply + .cbi-button-save:focus, .cbi-page-actions .cbi-button-apply + .cbi-button-save:active { - text-decoration: none; - outline: 0; + text-decoration: none; + outline: 0; } + button:hover, .waves-input-wrapper:hover, .btn:hover, @@ -1273,27 +1435,31 @@ button:hover, .cbi-button:focus, .item:hover::after, .item:focus::after { - opacity: 0.7; - top:0.15rem; + opacity: 0.7; + top: 0.15rem; } + .btn:active, .cbi-button:active, .item:active::after { - opacity: 0.7; + opacity: 0.7; } + .cbi-button-up:hover, .cbi-button-up:focus { - opacity: 0.7; + opacity: 0.7; } + .cbi-button-up:active { - opacity: 0.7; + opacity: 0.7; } + .btn:disabled, .cbi-button:disabled { - cursor: not-allowed; - pointer-events: none; - opacity: 0.5; - box-shadow: none; + cursor: not-allowed; + pointer-events: none; + opacity: 0.5; + box-shadow: none; } /* gray */ .alert-message [class="btn"], @@ -1306,8 +1472,8 @@ button:hover, .cbi-button[name="zero"], .cbi-button[name="restart"], .cbi-button[onclick="hide_empty(this)"] { - color: #fff; - background-color: #A3AFBD !important; + color: #fff; + background-color: #A3AFBD !important; } /* dark blue */ .btn.primary, @@ -1321,10 +1487,10 @@ button:hover, .cbi-button[value="Scan"], .cbi-button[value^="Back"], .cbi-button-neutral[onclick="handleConfig(event)"] { - font-weight: normal; - color: #fff; - border:none; - background-color: #23bd70 !important; + font-weight: normal; + color: #fff; + border: none; + background-color: #23bd70 !important; } /* light blue */ .cbi-page-actions .cbi-button-apply, @@ -1337,9 +1503,9 @@ button:hover, .cbi-button[value="Upload"], .cbi-button[value$="Apply"], .cbi-button[onclick="addKey(event)"] { - font-weight: normal; - color: #fff; - background-color: #5A8DEE !important; + font-weight: normal; + color: #fff; + background-color: #5A8DEE !important; } /* red */ .btn.danger, @@ -1352,10 +1518,10 @@ button:hover, .cbi-button[value="Kill"], .cbi-button[onclick="reboot(this)"], .cbi-button-neutral[value="Restart"] { - font-weight: normal; - color: #fff; - border: none; - background-color: #fdb75a !important; + font-weight: normal; + color: #fff; + border: none; + background-color: #fdb75a !important; } /* yellow */ .btn[value="Dismiss"], @@ -1365,10 +1531,10 @@ button:hover, .cbi-button[onclick^="iface_reconnect"], .cbi-button[onclick="handleReset(event)"], .cbi-button-neutral[value="Disable"] { - font-weight: normal; - color: #fff; - border: none; - background-color:#00CFDD !important; + font-weight: normal; + color: #fff; + border: none; + background-color: #00CFDD !important; } /* green */ .cbi-button-success, @@ -1376,390 +1542,447 @@ button:hover, .cbi-button[name="backup"], .cbi-button[value="Download"], .cbi-button[value="Save mtdblock"] { - font-weight: normal; - color: #fff; - background-color: #5cb85c !important; -} -.cbi-page-actions .cbi-button-link:first-child { - float: left; -} -.a-to-btn { - text-decoration: none; -} -.cbi-value-field .cbi-button-add { - font-weight: bold; - margin: 9px 0 4px 3px; - padding: 1px 6px; + font-weight: normal; + color: #fff; + background-color: #5cb85c !important; } +.cbi-page-actions .cbi-button-link:first-child { + float: left; +} + +.a-to-btn { + text-decoration: none; +} + +.cbi-value-field .cbi-button-add { + font-weight: bold; + margin: 9px 0 4px 3px; + padding: 1px 6px; +} .tabs > li, .cbi-tabmenu > li { - display: inline-block; - padding: 0; - margin: 0; + display: inline-block; + padding: 0; + margin: 0; + cursor: pointer; +} - cursor: pointer; -} .tabs > li,.cbi-tabmenu > li { - border-bottom: 0.2rem solid transparent; - background-color: #fff; + border-bottom: 0.2rem solid transparent; + background-color: #fff; } + .tabs > li[class~="active"], .tabs > li:hover { - border-bottom-color: #5A8DEE; - background-color: #669bff36; + border-bottom-color: #5A8DEE; + background-color: #669bff36; } -.tabs > li:hover { - cursor: pointer; +.tabs > li:hover { + cursor: pointer; } + .tabs > li > a, .cbi-tabmenu > li > a { - padding: 0.8rem 1.9rem; - text-decoration: none; - color: #404040; - display:inline-block; + padding: 0.8rem 1.9rem; + text-decoration: none; + color: #404040; + display: inline-block; } + .tabs > li[class~="active"] > a { - color: #5A8DEE; - color: #5A8DEE; + color: #5A8DEE; + color: #5A8DEE; } - -ul.tabs,.tabmenu .tabs,#tabmenu .tabs,ul.cbi-tabmenu{ +ul.tabs,.tabmenu .tabs,#tabmenu .tabs,ul.cbi-tabmenu { padding-left: 2rem; - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12); - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - border-bottom: 0; - margin-bottom:10px; - background-color: #fff; - padding-top: 1rem; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12); + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; + border-bottom: 0; + margin-bottom: 10px; + background-color: #fff; + padding-top: 1rem; } .cbi-tabmenu > li:hover { - background-color: rgba(246,178,181,0.2); + background-color: rgba(246,178,181,0.2); } + .cbi-tabmenu > li[class~="cbi-tab"] { - background-color: rgba(246,178,181,0.2); - border-bottom-color: #ff9b84; + background-color: rgba(246,178,181,0.2); + border-bottom-color: #ff9b84; } + .cbi-tabmenu > li[class~="cbi-tab"] a { - color: #ee6e73; + color: #ee6e73; } + .cbi-section .cbi-section-remove:nth-of-type(2n), .container > .cbi-section .cbi-section-node:nth-of-type(2n) { - background-color: #f9f9f9; + background-color: #f9f9f9; } [data-tab-title] { - overflow: hidden; - height: 0; - opacity: 0; - margin: 0; - padding: 0rem 0rem !important; + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 0rem !important; } [data-tab-title] p { - margin-left: 1rem; - margin-bottom: 1rem; + margin-left: 1rem; + margin-bottom: 1rem; } [data-tab-active="true"] { - overflow: visible; - height: auto; - opacity: 1; - transition: opacity 0.25s ease-in; - margin: inherit !important; + overflow: visible; + height: auto; + opacity: 1; + transition: opacity 0.25s ease-in; + margin: inherit !important; } + .cbi-section-node-tabbed { - margin-top: 0; - padding: 0; - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; + margin-top: 0; + padding: 0; + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; } + .cbi-value-field, .cbi-value-description { - display: table-cell; - position: relative; - margin-top: 1rem; - margin-bottom: 1rem; + display: table-cell; + position: relative; + margin-top: 1rem; + margin-bottom: 1rem; } + .cbi-value-field abbr, .cbi-value-description abbr { - color: #32325d; - color: var(--gray-dark); + color: #32325d; + color: var(--gray-dark); } + .cbi-value-description { - line-height: inherit !important; + line-height: inherit !important; } .cbi-value-title { - display: table-cell; - float: left; - width: 15rem; - padding-right: 2rem; - text-align: right; - word-wrap: break-word; + display: table-cell; + float: left; + width: 15rem; + padding-right: 2rem; + text-align: right; + word-wrap: break-word; } + .cbi-value { - display: inline-block; - width: 100%; - padding: 0.5rem 1rem; - line-height: 2.4rem; + display: inline-block; + width: 100%; + padding: 0.5rem 1rem; + line-height: 2.4rem; } -.cbi-value-field >*{ + +.cbi-value-field >* { line-height: 1.3rem; } + .cbi-value ul { - line-height: 1.25; + line-height: 1.25; } + .cbi-value-field .cbi-dropdown, .cbi-value-field .cbi-input-select, .cbi-value input[type="text"], .cbi-value input[type="password"] { - min-width: 18rem; + min-width: 18rem; } + #cbi-firewall-zone .cbi-input-select, #cbi-network-switch_vlan .cbi-input-select { - min-width: 11rem; + min-width: 11rem; } + #cbi-network-switch_vlan .cbi-input-text { - max-width: 3rem; + max-width: 3rem; } + .cbi-input-invalid { - color: #f5365c; - border-bottom-color: #f5365c; + color: #f5365c; + border-bottom-color: #f5365c; } + .cbi-section-error { - font-weight: bold; - line-height: 1.42857143; - margin: 18px; - padding: 6px; - border: thin solid #f5365c; - border-radius: 3px; - background-color: #fce6e6; + font-weight: bold; + line-height: 1.42857143; + margin: 18px; + padding: 6px; + border: thin solid #f5365c; + border-radius: 3px; + background-color: #fce6e6; } + .cbi-section-error ul { - margin: 0 0 0 20px; + margin: 0 0 0 20px; } + .cbi-section-error ul li { - font-weight: bold; - color: #f5365c; + font-weight: bold; + color: #f5365c; } + .td[data-title]::before { - font-weight: bold; - display: none; - padding: 0.25rem 0; - content: attr(data-title) ":\20"; - text-align: left; - white-space: nowrap; + font-weight: bold; + display: none; + padding: 0.25rem 0; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; } + .tr.placeholder .td[data-title]::before { - display: none; + display: none; } + .tr[data-title]::before, .tr.cbi-section-table-titles.named::before { - font-weight: bold; - display: table-cell; - align-self: center; - flex: 1 1 5%; - padding: 0.25rem; - content: attr(data-title) "\20"; - text-align: center; - vertical-align: middle; - white-space: normal; - word-wrap: break-word; + font-weight: bold; + display: table-cell; + align-self: center; + flex: 1 1 5%; + padding: 0.25rem; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; } .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; + width: auto !important; } + .td.cbi-section-actions { - text-align: right !important; - vertical-align: middle; + text-align: right !important; + vertical-align: middle; } + .td.cbi-section-actions > * { - display: inline-flex; + display: inline-flex; } + .td.cbi-section-actions > * > *, .td.cbi-section-actions > * > form > * { - margin: 0 5px; - display: flex; - align-items: center; + margin: 0 5px; + display: flex; + align-items: center; } + .td.cbi-section-actions > * > form { - display: inline-flex; - margin: 0; + display: inline-flex; + margin: 0; } /* lists */ .cbi-dynlist { - line-height: 1.3; - flex-direction: column; - min-height: 30px; - cursor: text; + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; } + .cbi-dynlist > .item { - position: relative; - max-width: 25rem; - margin-right: 2em; - margin-bottom: 0.3rem; - padding: 1em 0.25em 0.25em 0; - pointer-events: none; - color: #8898aa; - border-bottom: 2px solid #5A8DEE; - border-bottom: 2px solid #5A8DEE; - outline: 0; + position: relative; + max-width: 25rem; + margin-right: 2em; + margin-bottom: 0.3rem; + padding: 1em 0.25em 0.25em 0; + pointer-events: none; + color: #8898aa; + border-bottom: 2px solid #5A8DEE; + border-bottom: 2px solid #5A8DEE; + outline: 0; } + .cbi-dynlist[name="sshkeys"] > .item { - max-width: none; + max-width: none; } + .cbi-dynlist > .item::after { - font-weight: bold; - position: absolute; - right: -2em; - bottom: 0; - display: inline-flex; - min-height: 17px; - padding: 0 6px; - content: "\00D7"; - pointer-events: auto; - color: #fff; - border: thin solid #f5365c; - border: thin solid var(--red); - background-color: #f5365c; - background-color: var(--red); + font-weight: bold; + position: absolute; + right: -2em; + bottom: 0; + display: inline-flex; + min-height: 17px; + padding: 0 6px; + content: "\00D7"; + pointer-events: auto; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); } + .cbi-dynlist > .item > span { - white-space: normal; - word-break: break-word; + white-space: normal; + word-break: break-word; } + .cbi-dynlist > .add-item { - display: inline-flex; - align-items: center; - width: 100%; - min-width: 16rem; + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; } + .cbi-dynlist > .add-item:not([ondrop]) > input { - overflow: hidden; - width: 100%; - min-width: 15rem; - white-space: nowrap; - text-overflow: ellipsis; + overflow: hidden; + width: 100%; + min-width: 15rem; + white-space: nowrap; + text-overflow: ellipsis; } + .cbi-dynlist > .add-item[ondrop] > input { - min-width: 13rem; + min-width: 13rem; } + .cbi-dynlist, .cbi-dropdown { - position: relative; - display: inline-flex; - padding: 0.2rem; + position: relative; + display: inline-flex; + padding: 0.2rem; } + .cbi-dropdown[placeholder*="select"] { - max-width: 25rem; - margin-top: -3px; + max-width: 25rem; + margin-top: -3px; } + .cbi-dropdown > ul { - display: flex; - overflow-x: hidden; - overflow-y: auto; - width: 100%; - margin: 0 !important; - padding: 0; - list-style: none; - outline: 0; + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0 !important; + padding: 0; + list-style: none; + outline: 0; } + .cbi-dropdown > ul.preview { - display: none; + display: none; } + .cbi-button-apply > ul.preview { - display: none; + display: none; } + .cbi-button-apply > ul.preview li { - color: #fff; + color: #fff; } + .cbi-button-apply > ul:first-child li { - color: #fff; + color: #fff; } + .cbi-dropdown > .open { - flex-basis: 15px; + flex-basis: 15px; } + .cbi-dropdown > .open, .cbi-dropdown > .more { - font-size: 1rem; - font-weight: 900; - display: flex; - flex-direction: column; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; - padding: 0 0.25em; - cursor: default; - text-align: center; - outline: 0; - line-height:1rem; + font-size: 1rem; + font-weight: 900; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + padding: 0 0.25em; + cursor: default; + text-align: center; + outline: 0; + line-height: 1rem; } + .cbi-dropdown > .more, .cbi-dropdown > ul > li[placeholder] { - font-weight: bold; - display: none; - color: #777; - text-shadow: 1px 1px 0 #fff; + font-weight: bold; + display: none; + color: #777; + text-shadow: 1px 1px 0 #fff; } + .cbi-dropdown > ul > li { - display: none; - overflow: hidden; - align-items: center; - align-self: center; - flex-grow: 1; - flex-shrink: 1; - white-space: nowrap; - text-overflow: ellipsis; + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + white-space: nowrap; + text-overflow: ellipsis; } + .cbi-dropdown > ul > li .hide-open { - display: initial; + display: initial; } + .cbi-dropdown > ul > li .hide-close { - display: none; + display: none; } + .cbi-dropdown > ul > li[display]:not([display="0"]) { - border-left: thin solid #ccc; + border-left: thin solid #ccc; } + .cbi-dropdown[empty] > ul { - max-width: 1px; + max-width: 1px; } + .cbi-dropdown > ul > li > form { - display: none; - margin: 0; - padding: 0; - pointer-events: none; + display: none; + margin: 0; + padding: 0; + pointer-events: none; } + .cbi-dropdown > ul > li img { - margin-right: 0.25em; - vertical-align: middle; + margin-right: 0.25em; + vertical-align: middle; } + .cbi-dropdown > ul > li > form > input[type="checkbox"] { - height: auto; - margin: 0; + height: auto; + margin: 0; } + .cbi-dropdown > ul > li input[type="text"] { - height: 20px; + height: 20px; } + .cbi-dropdown[open] > ul.dropdown { - position: absolute; - z-index: 1100; - display: block; - width: auto; - min-width: 100%; - max-width: none; - max-height: 200px !important; - border: thin solid #918e8c; - background: #f6f6f6; - box-shadow: 0 0 4px #918e8c; - color: var(--main-menu-color); + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: thin solid #918e8c; + background: #f6f6f6; + box-shadow: 0 0 4px #918e8c; + color: var(--main-menu-color); } + .cbi-dropdown[open] > ul.dropdown li { - color: #000; + color: #000; } + .cbi-dropdown > ul > li[display], .cbi-dropdown[open] > ul.preview, .cbi-dropdown[open] > ul.dropdown > li, @@ -1767,1920 +1990,2206 @@ ul.tabs,.tabmenu .tabs,#tabmenu .tabs,ul.cbi-tabmenu{ .cbi-dropdown[multiple][open] > ul.dropdown > li, .cbi-dropdown[multiple][more] > .more, .cbi-dropdown[multiple][empty] > .more { - display: flex; - align-items: center; - flex-grow: 1; + display: flex; + align-items: center; + flex-grow: 1; } + .cbi-dropdown[empty] > ul > li, .cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], .cbi-dropdown[multiple][open] > ul.dropdown > li > form { - display: block; + display: block; } + .cbi-dropdown[open] > ul.dropdown > li .hide-open { - display: none; + display: none; } + .cbi-dropdown[open] > ul.dropdown > li .hide-close { - display: initial; + display: initial; } + .cbi-dropdown[open] > ul.dropdown > li { - border-bottom: thin solid #ccc; - padding: 0.5rem 0.8rem; + border-bottom: thin solid #ccc; + padding: 0.5rem 0.8rem; } + .cbi-dropdown[open] > ul.dropdown > li[selected] { - background: #b0d0f0; + background: #b0d0f0; } + .cbi-dropdown[open] > ul.dropdown > li.focus { - background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); } + .cbi-dropdown[open] > ul.dropdown > li:last-child { - margin-bottom: 0; - border-bottom: 0; + margin-bottom: 0; + border-bottom: 0; } + .cbi-dropdown[open] > ul.dropdown > li[unselectable] { - opacity: 0.7; + opacity: 0.7; } + .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child { - width: 100%; + width: 100%; } + .cbi-dropdown[disabled] { - pointer-events: none; - opacity: 0.6; + pointer-events: none; + opacity: 0.6; } + .cbi-dropdown .zonebadge { - width: 100%; + width: 100%; } + .cbi-dropdown[open] .zonebadge { - width: auto; + width: auto; } /* progressbar */ .cbi-progressbar,#memtotal>div,#membuff>div,#conns>div { - position: relative; - width: 100% !important; - height: 20px; - margin: 6px 0; - border:none !important; - border-radius: 0.2rem; - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + position: relative; + width: 100% !important; + height: 20px; + margin: 6px 0; + border: none !important; + border-radius: 0.2rem; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); } -#memtotal>div small,#membuff>div small,#conns>div small{ - line-height:20px !important; +#memtotal>div small,#membuff>div small,#conns>div small { + line-height: 20px !important; } + @keyframes progress-bar-stripes { - from { - background-position: 0.357rem 0; - } - to { - background-position: 0 0; - } + from { + background-position: 0.357rem 0; + } + + to { + background-position: 0 0; + } } .cbi-progressbar > div,#memtotal>div>div,#membuff>div>div,#conns>div>div { - width: 0; - height: 100% !important; - transition: width 0.25s ease-in; - background-color: #5A8DEE !important; - background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + width: 0; + height: 100% !important; + transition: width 0.25s ease-in; + background-color: #5A8DEE !important; + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); background-size: auto auto; animation: progress-bar-stripes 1s linear infinite; } -#membuff>div>div{ +#membuff>div>div { background-color: #FDAC41 !important; } -#conns>div>div{ + +#conns>div>div { background-color: #23bd70 !important; } + .cbi-progressbar::after { - font-family: monospace; - font-size: 1em; - font-weight: bold; - font-size-adjust: 0.38; - line-height: normal; - position: absolute; - top: 2px; - right: 0; - bottom: 2px; - left: 0; - overflow: hidden; - content: attr(title); - text-align: center; - white-space: pre; - text-overflow: ellipsis; - color: #ff4500d1; + font-family: monospace; + font-size: 1em; + font-weight: bold; + font-size-adjust: 0.38; + line-height: normal; + position: absolute; + top: 2px; + right: 0; + bottom: 2px; + left: 0; + overflow: hidden; + content: attr(title); + text-align: center; + white-space: pre; + text-overflow: ellipsis; + color: #ff4500d1; } + #modal_overlay { - position: fixed; - z-index: 900; - top: 0; - right: 10000px; - bottom: 0; - left: -10000px; - overflow-y: scroll; - transition: opacity 0.125s ease-in; - opacity: 0; - background: rgba(0, 0, 0, 0.7); - -webkit-overflow-scrolling: touch; + position: fixed; + z-index: 900; + top: 0; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity 0.125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, 0.7); + -webkit-overflow-scrolling: touch; } + .modal { - display: flex; - align-items: center; - flex-wrap: wrap; - width: 90%; - min-width: 270px; - max-width: 695px; - min-height: 32px; - margin: 25vh auto; - padding: 1em; - border-radius: 3px !important; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 695px; + min-height: 32px; + margin: 25vh auto; + padding: 1em; + border-radius: 3px !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); } + .modal > * { - line-height: normal; - flex-basis: 100%; - max-width: 100%; + line-height: normal; + flex-basis: 100%; + max-width: 100%; } + .modal > pre, .modal > textarea { - font-size: 1rem; - font-size-adjust: 0.35; - overflow: auto; - margin-bottom: 0.5em; - padding: 8.5px; - cursor: auto; - white-space: pre-wrap; - color: #eee; - outline: 0; - background-color: #101010; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + font-size: 1rem; + font-size-adjust: 0.35; + overflow: auto; + margin-bottom: 0.5em; + padding: 8.5px; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); } + .modal > h4 { - margin: 0.5em 0; + margin: 0.5em 0; } + .modal ul { - margin-left: 2.2em; + margin-left: 2.2em; } + .modal li { - list-style-type: square; - color: #808080; + list-style-type: square; + color: #808080; } + .modal p { - word-break: break-word; - margin:1rem 0; - + word-break: break-word; + margin: 1rem 0; } -h3+p,h4+p{ - margin-top:0 !important; + +h3+p,h4+p { + margin-top: 0 !important; } + .modal .label { - font-size: 0.6rem; - font-weight: normal; - padding: 0.1rem 0.3rem; - cursor: default; - border-radius: 0; - background: #9b9b9b; - color: #fff; -} -.modal .label.notice{ + font-size: 0.6rem; + font-weight: normal; + padding: 0.1rem 0.3rem; + cursor: default; + border-radius: 0; + background: #9b9b9b; color: #fff; - background: #5A8DEE; } + +.modal .label.notice { + color: #fff; + background: #5A8DEE; +} + body.modal-overlay-active { - overflow: hidden; - height: 100vh; + overflow: hidden; + height: 100vh; } + body.modal-overlay-active #modal_overlay { - right: 0; - left: 0; - opacity: 1; + right: 0; + left: 0; + opacity: 1; } + .spinning { - position: relative; - padding-left: 32px !important; + position: relative; + padding-left: 32px !important; } + .spinning::before { - position: absolute; - top: 0; - bottom: 0; - left: 0.2em; - width: 32px; - content: ""; - background: url(../resources/icons/loading.gif) no-repeat center; - background-size: 16px; + position: absolute; + top: 0; + bottom: 0; + left: 0.2em; + width: 32px; + content: ""; + background: url(../resources/icons/loading.gif) no-repeat center; + background-size: 16px; } /* luci */ .hidden { - display: none; + display: none; } + .left, .left::before { - text-align: left !important; + text-align: left !important; } + .right, .right::before { - text-align: right !important; + text-align: right !important; } + .center, .center::before { - text-align: center !important; + text-align: center !important; } + .top { - align-self: flex-start !important; - vertical-align: top !important; + align-self: flex-start !important; + vertical-align: top !important; } + .bottom { - align-self: flex-end !important; - vertical-align: bottom !important; + align-self: flex-end !important; + vertical-align: bottom !important; } + .inline { - display: inline; + display: inline; } + .cbi-page-actions { - padding-top: 1rem; - text-align: right; - padding-right:2rem; + padding-top: 1rem; + text-align: right; + padding-right: 2rem; } + .node-main-login .cbi-page-actions { - padding-right:0; + padding-right: 0; } + .cbi-page-actions > form[method="post"] { - display: inline-block; + display: inline-block; } + .th[data-type="button"], .td[data-type="button"], .th[data-type="fvalue"], .td[data-type="fvalue"] { - flex: 1 1 2em; - text-align: center; + flex: 1 1 2em; + text-align: center; } + .ifacebadge { - display: inline-flex; - padding: 0.5rem 0.8rem; - border-bottom: thin solid #ccc; - background: #eee; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + display: inline-flex; + padding: 0.5rem 0.8rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } + td > .ifacebadge, .td > .ifacebadge { - font-size: 0.8rem; - background-color: #f0f0f0; + font-size: 0.8rem; + background-color: #f0f0f0; } + .ifacebadge > em, .ifacebadge > img { - display: inline-block; - align-self: flex-start; - margin: 0 0.2rem; + display: inline-block; + align-self: flex-start; + margin: 0 0.2rem; } + .ifacebadge > img + img { - margin: 0 0.2rem 0 0; + margin: 0 0.2rem 0 0; } + .network-status-table { - display: flex; - flex-wrap: wrap; + display: flex; + flex-wrap: wrap; } + .network-status-table .ifacebox { - flex-grow: 1; + flex-grow: 1; } + .network-status-table .ifacebox-body { - display: flex; - flex-direction: column; - height: 100%; + display: flex; + flex-direction: column; + height: 100%; } + .network-status-table .ifacebox-body > span { - flex: 10 10 auto; - height: 100%; + flex: 10 10 auto; + height: 100%; } + .network-status-table .ifacebox-body > div { - display: flex; - flex-wrap: wrap; + display: flex; + flex-wrap: wrap; } + .network-status-table .ifacebox-body .ifacebadge { - align-items: center; - flex: 1 1 auto; - min-width: 220px; - margin: 0.5em 0em 0 0em; - padding: 0.5em; - background-color: #fff; + align-items: center; + flex: 1 1 auto; + min-width: 220px; + margin: 0.5em 0em 0 0em; + padding: 0.5em; + background-color: #fff; } /* textarea */ textarea { - font-family: monospace; - width: 95%; - min-width:28rem; - padding: 0.8rem; - line-height:1.6rem !important; - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - border:0 !important; - margin:0 2rem; + font-family: monospace; + width: 95%; + min-width: 28rem; + padding: 0.8rem; + line-height: 1.6rem !important; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; + border: 0 !important; + margin: 0 2rem; width: 95% !important; } + .cbi-section textarea { - margin:0rem; - + margin: 0rem; } + #syslog { - font-size: small; - width: 100%; - min-height: 25rem; - padding: 1rem; - resize: none; - color: #eee; - border: 0; - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - background-color: #242424; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - max-height: 100% !important; + font-size: small; + width: 100%; + min-height: 25rem; + padding: 1rem; + resize: none; + color: #eee; + border: 0; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; + background-color: #242424; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + max-height: 100% !important; } + #syslog:focus { - outline: 0; + outline: 0; } /* config changes */ .uci-change-list { - font-family: monospace; + font-family: monospace; } + .uci-change-list ins, .uci-change-legend-label ins { - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #0f0; - background-color: #cfc; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; } + .uci-change-list del, .uci-change-legend-label del { - font-style: normal; - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #f00; - background-color: #fcc; + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #f00; + background-color: #fcc; } + .uci-change-list var, .uci-change-legend-label var { - font-style: normal; - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #ccc; - background-color: #eee; + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; } + .uci-change-list var ins, .uci-change-list var del { - font-style: normal; - padding: 0; - white-space: pre; - border: 0; + font-style: normal; + padding: 0; + white-space: pre; + border: 0; } + .uci-change-legend { - padding: 5px; + padding: 5px; } + .uci-change-legend-label { - float: left; - width: 150px; + float: left; + width: 150px; } + .uci-change-legend-label > ins, .uci-change-legend-label > del, .uci-change-legend-label > var { - display: block; - float: left; - width: 10px; - height: 10px; - margin-right: 4px; + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; } + .uci-change-legend-label var ins, .uci-change-legend-label var del { - line-height: 0.4; - border: 0; + line-height: 0.4; + border: 0; } + .uci-change-list var, .uci-change-list del, .uci-change-list ins { - padding: 0.5rem; + padding: 0.5rem; } /* other fix */ #iwsvg, #iwsvg2, #bwsvg { - border: thin solid #d4d4d4 !important; + border: thin solid #d4d4d4 !important; } + #iwsvg, [data-page="admin-status-realtime-bandwidth"] #bwsvg { - border-top: 0 !important; + border-top: 0 !important; } -.ifacebox { - line-height: 1.25; - display: inline-flex; - flex-direction: column; - min-width: 100px; -} -.ifacebox-head { - padding: 0.25em; - background: #eee; -} -.ifacebox-head.active { - background: #5A8DEE; +.ifacebox { + line-height: 1.25; + display: inline-flex; + flex-direction: column; + min-width: 100px; } + +.ifacebox-head { + padding: 0.25em; + background: #eee; +} + +.ifacebox-head.active { + background: #5A8DEE; +} + .ifacebox-head.active * { - color: #fff; - color: var(--white); + color: #fff; + color: var(--white); } + .ifacebox-body { - padding: 0.5em 2rem; - line-height: 1.6em; + padding: 0.5em 2rem; + line-height: 1.6em; } + .cbi-image-button { - margin-left: 0.5rem; - position: relative; - top: 0.8rem; + margin-left: 0.5rem; + position: relative; + top: 0.8rem; } + .zonebadge { - display: inline-block; - padding: 0.2rem 0.5rem; + display: inline-block; + padding: 0.2rem 0.5rem; } + .zonebadge .ifacebadge { - margin: 0.1rem 0.2rem; - padding: 0.2rem 0.3rem; - border: thin solid #6c6c6c; + margin: 0.1rem 0.2rem; + padding: 0.2rem 0.3rem; + border: thin solid #6c6c6c; } + .zonebadge > input[type="text"] { - min-width: 10rem; - margin-top: 0.3rem; - padding: 0.16rem 1rem; + min-width: 10rem; + margin-top: 0.3rem; + padding: 0.16rem 1rem; } + .zonebadge > em, .zonebadge > strong { - display: inline-block; - margin: 0 0.2rem; + display: inline-block; + margin: 0 0.2rem; } + .cbi-value-field .cbi-input-checkbox, .cbi-value-field .cbi-input-radio { + margin-right: 5px; +} - margin-right: 5px; -} .cbi-value-field > ul > li { - display: flex; + display: flex; } + .cbi-value-field > ul > li > label { - margin-top: 0.5rem; + margin-top: 0.5rem; } + .cbi-value-field > ul > li .ifacebadge { - margin-top: -0.5rem; - margin-left: 0.4rem; - background-color: #eee; + margin-top: -0.5rem; + margin-left: 0.4rem; + background-color: #eee; } + .cbi-section-table-row > .cbi-value-field .cbi-dropdown { - min-width: 7rem; + min-width: 7rem; } + .cbi-section-create { - display: inline-flex; - align-items: center; - margin: 0.25rem 0 0.25rem 1rem; + display: inline-flex; + align-items: center; + margin: 0.25rem 0 0.25rem 1rem; } + .cbi-section-create > * { - margin: 0.5rem; + margin: 0.5rem; } + .cbi-section-remove { - padding: 0.5rem; + padding: 0.5rem; } + div.cbi-value var, td.cbi-value-field var, .td.cbi-value-field var { - font-style: italic; - color: #0069d6; + font-style: italic; + color: #0069d6; } + .cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: thin solid #ccc; + padding: 1rem 1rem 0 1rem; + border-top: thin solid #ccc; } + .cbi-dropdown-container { - position: relative; + position: relative; } + .cbi-tooltip-container, span[data-tooltip], span[data-tooltip] .label { - cursor: help !important; + cursor: help !important; } + .cbi-tooltip { - position: absolute; - z-index: 1000; - left: -1000px; - padding: 2px 5px; - transition: opacity 0.25s ease-out; - white-space: pre; - pointer-events: none; - opacity: 0; - border-radius: 3px; - background: #fff; - box-shadow: 0 0 2px #444; + position: absolute; + z-index: 1000; + left: -1000px; + padding: 2px 5px; + transition: opacity 0.25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 3px; + background: #fff; + box-shadow: 0 0 2px #444; } + .cbi-tooltip-container:hover .cbi-tooltip { - left: auto; - transition: opacity 0.25s ease-in; - opacity: 1; + left: auto; + transition: opacity 0.25s ease-in; + opacity: 1; } + .zonebadge .cbi-tooltip { - margin: -1.5rem 0 0 -0.5rem; - padding: 0.25rem; - background: inherit; + margin: -1.5rem 0 0 -0.5rem; + padding: 0.25rem; + background: inherit; } + .zonebadge-empty { - color: #404040; - background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); + color: #404040; + background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } + .zone-forwards { - display: flex; - min-width: 10rem; + display: flex; + min-width: 10rem; } + .zone-forwards > * { - flex: 1 1 45%; + flex: 1 1 45%; } + .zone-forwards > span { - flex-basis: 10%; - padding: 0 0.25rem; - text-align: center; + flex-basis: 10%; + padding: 0 0.25rem; + text-align: center; } + .zone-forwards .zone-src, .zone-forwards .zone-dest { - display: flex; - flex-direction: column; + display: flex; + flex-direction: column; } + .label,#indicators>span { - font-size: 0.8rem; - padding: 0.3rem 0.8rem; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - border-radius: 3px; - text-shadow: none; - margin: 0 0.5rem; - color:#fff; - background:#5A8DEE; + font-size: 0.8rem; + padding: 0.3rem 0.8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + border-radius: 3px; + text-shadow: none; + margin: 0 0.5rem; + color: #fff; + background: #5A8DEE; } -#indicators span[data-indicator="poll-status"]{ - color: #FDAC41 !important; - background-color: #FFEED9; + +#indicators span[data-indicator="poll-status"] { + color: #FDAC41 !important; + background-color: #FFEED9; } -#indicators span[data-indicator="uci-changes"]{ + +#indicators span[data-indicator="uci-changes"] { color: #39DA8A !important; - background-color: #D2FFE8; + background-color: #D2FFE8; } + label > input[type="checkbox"], label > input[type="radio"] { - position: relative; - right: 0.2rem; - margin: 0; - vertical-align: bottom; + position: relative; + right: 0.2rem; + margin: 0; + vertical-align: bottom; } + label[data-index][data-depends] { - padding-right: 2em; + padding-right: 2em; } + .showSide { - display: none; + display: none; } + .darkMask { - position: fixed; - z-index: 99; - display: none; - width: 100%; - height: 100%; - content: ""; - top: 0; - background-color: rgba(0, 0, 0, 0.56); + position: fixed; + z-index: 99; + display: none; + width: 100%; + height: 100%; + content: ""; + top: 0; + background-color: rgba(0, 0, 0, 0.56); } /* diagnostics */ #diag-rc-output > pre, #command-rc-output > pre, [data-page="admin-services-wol"] .notice code { - font-size: 1.2rem; - font-size-adjust: 0.35; - line-height: normal; - display: block; - overflow-y: hidden; - width: 100%; - padding: 8.5px; - white-space: pre; - color: #eee; - background-color: #101010; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + font-size: 1.2rem; + font-size-adjust: 0.35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + padding: 8.5px; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); } [data-page="admin-network-diagnostics"] .table { - box-shadow: none; + box-shadow: none; } + input[name="ping"], input[name="traceroute"], input[name="nslookup"] { - width: 80%; + width: 80%; } /* fix Main Login */ .node-main-login .main { - top: 0; - height: 100% !important; + top: 0; + height: 100% !important; } + .node-main-login .main .main-left { - display: none; + display: none; } + .node-main-login .main .main-right { - width: 100%; - text-align:center; -overflow: hidden; + width: 100%; + text-align: center; + overflow: hidden; } + .node-main-login .main .main-right header { - background: none !important; - box-shadow: none !important; - display: none !important; + background: none !important; + box-shadow: none !important; + display: none !important; } + .node-main-login .main .main-right .login-bg { - display: block; - position: fixed; - width: 100%; - height: 100%; - left: 0px; - top: 0px; - background-size: cover; - background-color: #000; - background-position: top center; - transition: all 0.5s; + display: block; + position: fixed; + width: 100%; + height: 100%; + left: 0px; + top: 0px; + background-size: cover; + background-color: #000; + background-position: top center; + transition: all 0.5s; } + .node-main-login .main .main-right .login-bg.blur { - transform: scale(1.05); - -webkit-filter: blur(5px); + transform: scale(1.05); + -webkit-filter: blur(5px); /* Chrome, Safari, Opera */ - filter: blur(5px); + filter: blur(5px); } + .node-main-login .main .main-right #maincontent { - height: 100%; - padding-top: 23vh; - margin-top: 0rem; - background-color: transparent !important; - text-align: center; - display:inline-block; - z-index:999; + height: 100%; + padding-top: 23vh; + margin-top: 0rem; + background-color: transparent !important; + text-align: center; + display: inline-block; + z-index: 999; } + .node-main-login .main .main-right #maincontent .container { - display: inline-block; - padding: 1rem 1.2rem; - position: relative; - - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - text-align: left; - background:#faf5f3c2; - margin:0; + display: inline-block; + padding: 1rem 1.2rem; + position: relative; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; + text-align: left; + background: #faf5f3c2; + margin: 0; } + .node-main-login .main .main-right #maincontent .alert-message.warning { - position: absolute; - color: #fff; - width: calc(100%); - box-sizing: border-box; - margin-top: -3.5rem; - border-radius: 5px !important; - padding: 0.5rem 1rem; - text-align: center; - background-color:#eea236 !important; + position: absolute; + color: #fff; + width: calc(100%); + box-sizing: border-box; + margin-top: -3.5rem; + border-radius: 5px !important; + padding: 0.5rem 1rem; + text-align: center; + background-color: #eea236 !important; } + .node-main-login .main .main-right #maincontent .alert-message p { - color: #fff; - font-weight:normal; - font-size:0.83rem; + color: #fff; + font-weight: normal; + font-size: 0.83rem; } + .node-main-login .main .main-right #maincontent .alert-message.error { - position: absolute; - color: #fff; - width: calc(100%); - background-color: #f0ad4e; - border-color: #eea236; - box-sizing: border-box; - margin-top: -7.5rem; - border-radius: 5px !important; - padding: 1rem 1rem 0.5rem 1rem; - text-align: center; + position: absolute; + color: #fff; + width: calc(100%); + background-color: #f0ad4e; + border-color: #eea236; + box-sizing: border-box; + margin-top: -7.5rem; + border-radius: 5px !important; + padding: 1rem 1rem 0.5rem 1rem; + text-align: center; } + .node-main-login .main .main-right #maincontent .alert-message.error p { - color: #fff; + color: #fff; } + .alert-message p { - text-align: center; + text-align: center; } + .node-main-login .main .main-right #maincontent .alert-message.error h4 { - font-size: 1rem; + font-size: 1rem; } + .node-main-login .main .main-right #maincontent .alert-message.error .btn { - height: auto; + height: auto; } + .node-main-login .main .main-right #maincontent .container .cbi-map h2 { - - display: block; - margin: 10px auto 10px auto; - padding: 0; -text-align:center; - + display: block; + margin: 10px auto 10px auto; + padding: 0; + text-align: center; } + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-map-descr { - text-align: center; - padding: 1rem; - color: #8898aa; - font-size:1.2rem; + text-align: center; + padding: 1rem; + color: #8898aa; + font-size: 1.2rem; } -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section { - padding: 0.5rem; - margin-top: 0 !important; - background: none !important; - box-shadow: none !important; - -} -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node { - padding: 0; -} -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value { - display: block; - padding: 0; -background: none; -} -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value * { - display: inline-block !important; -} -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-title { - display: none !important; -} -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { - position: relative; - width: 18rem; - margin-bottom: 1em; -} -.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field input { - font-size: 1rem; - line-height: 1.5; - display: block; - width: 100%; - height: calc(2.75rem + 2px); - padding: 0.625rem 0.75rem; - transition: all 0.15s cubic-bezier(0.68, -0.55, 0.265, 1.55); - color: #8898aa; - background-clip: padding-box; - box-sizing: border-box; - padding-left: 3em !important; - margin: 0; - text-align: center; - text-indent: -3rem; +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section { + padding: 0.5rem; + margin-top: 0 !important; + background: none !important; + box-shadow: none !important; +} + +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node { + padding: 0; +} + +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value { + display: block; + padding: 0; + background: none; +} + +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value * { + display: inline-block !important; +} + +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-title { + display: none !important; +} + +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + position: relative; + width: 18rem; + margin-bottom: 1em; +} + +.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field input { + font-size: 1rem; + line-height: 1.5; + display: block; + width: 100%; + height: calc(2.75rem + 2px); + padding: 0.625rem 0.75rem; + transition: all 0.15s cubic-bezier(0.68, -0.55, 0.265, 1.55); + color: #8898aa; + background-clip: padding-box; + box-sizing: border-box; + padding-left: 3em !important; + margin: 0; + text-align: center; + text-indent: -3rem; background: transparent content-box !important; - box-sizing: border-box; - height: 0 !important; - padding: 1.38rem 0; + box-sizing: border-box; + height: 0 !important; + padding: 1.38rem 0; } + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field input:focus { - color: #8898aa; - outline: 0; + color: #8898aa; + outline: 0; } + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field:before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\e971"; - color: #adb5bd; - font-size: 1.5rem; - position: absolute; - z-index: 100; - left: 10px; - top: 10px; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e971"; + color: #adb5bd; + font-size: 1.5rem; + position: absolute; + z-index: 100; + left: 10px; + top: 10px; } .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value.cbi-value-last .cbi-value-field:before { - content: "\e910"; + content: "\e910"; } + .node-main-login .main .main-right #maincontent .container .cbi-page-actions { - text-align: center; - padding-top: 0; - margin-bottom:20px; + text-align: center; + padding-top: 0; + margin-bottom: 20px; } + .node-main-login .main .main-right #maincontent .container .cbi-page-actions input { - padding: 0.7rem 5.5rem + padding: 0.7rem 5.5rem } -.node-main-login .main .main-right #maincontent .container .cbi-page-actions .cbi-button{ + +.node-main-login .main .main-right #maincontent .container .cbi-page-actions .cbi-button { background-color: #5a8deec7; } + .node-main-login .main .main-right #maincontent .container .cbi-page-actions .cbi-button.cbi-button-reset { - display: none !important; + display: none !important; } + .node-main-login .main .main-right #maincontent footer { - bottom: 0; - position: absolute; - width: 100%; - color: #fff; + bottom: 0; + position: absolute; + width: 100%; + color: #fff; } + .node-main-login .main .main-right #maincontent footer a { - color: #fff; + color: #fff; } + @media screen and (min-height: 585px) { - .node-main-login footer { - display: none; - position: absolute; - bottom: 0; - width: 100%; - } + .node-main-login footer { + display: none; + position: absolute; + bottom: 0; + width: 100%; + } } /* fix status */ .node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2), .node-status-processes > .main .table .tr .td:nth-child(3) { - white-space: normal; + white-space: normal; } /* fix system reboot */ [data-page="admin-system-reboot"] p { - padding-left: 0rem; - color: #fff; + padding-left: 0rem; + color: #fff; } [data-page="admin-system-reboot"] .cbi-button { - background: #fb6340 !important; + background: #fb6340 !important; } [data-page="admin-system-reboot"] p > span { - position: relative; - top: 0.1rem; - left: 1rem; + position: relative; + top: 0.1rem; + left: 1rem; } /* samba */ #cbi-samba [data-tab="template"] .cbi-value-field { - display: block; + display: block; } + #cbi-samba [data-tab="template"] .cbi-value-title { - width: auto; - padding-bottom: 0.6rem; + width: auto; + padding-bottom: 0.6rem; } /* admin-system-admin-password */ [data-page="admin-system-admin"] .cbi-map h2, [data-page="admin-system-admin-password"] .cbi-map h2, [data-page="admin-system-admin"] .cbi-map .cbi-map-descr, [data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - margin-left: 1.5rem; - color: #32325d; - color: var(--gray-dark); + margin-left: 1.5rem; + color: #32325d; + color: var(--gray-dark); } /* software */ [data-page="admin-system-opkg"] h2 { - margin-left: 1.5rem; - color: #32325d; - color: var(--gray-dark); + margin-left: 1.5rem; + color: #32325d; + color: var(--gray-dark); } + .controls { - margin: 0.5em 2rem 1em 2rem !important; + margin: 0.5em 2rem 1em 2rem !important; } + .controls > * > .btn:not([aria-label$="page"]) { - flex-grow: initial !important; - margin-top: 0.25rem; + flex-grow: initial !important; + margin-top: 0.25rem; } + .controls > #pager > .btn[aria-label$="page"] { - font-size: 1.4rem; - font-weight: bold; + font-size: 1.4rem; + font-weight: bold; } + .controls > * > label { - margin-bottom: 0.2rem; + margin-bottom: 0.2rem; } [data-page="admin-system-opkg"] div.btn { - line-height: 3; - display: inline; + line-height: 3; + display: inline; } -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -{ - margin-top: 2rem; - padding-top: 0.1rem; +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear) { + margin-top: 2rem; + padding-top: 0.1rem; } .td.version, .td.size { - white-space: normal !important; - word-break: break-word; + white-space: normal !important; + word-break: break-word; } + .cbi-tabmenu + .cbi-section { - margin-top: 0; + margin-top: 0; } /* admin-system-crontab*/ [data-page="admin-system-crontab"] #view p { - color: #fff; - margin-bottom: 1rem; + color: #fff; + margin-bottom: 1rem; } /*admin-system-flash*/ [data-page="admin-system-flash"] .cbi-value { - padding: 0; + padding: 0; } [data-page="admin-system-flash"] .cbi-section .cbi-section { - margin-top: 0; + margin-top: 0; } [data-page="admin-system-flash"] legend { - display: block !important; - font-size: 1.2rem; - width: 100%; - display: block; - margin-bottom: 0; - padding: 1rem 0 1rem 1.5rem; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); - line-height: 1.5; - margin-bottom: 0rem; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: bold; + display: block !important; + font-size: 1.2rem; + width: 100%; + display: block; + margin-bottom: 0; + padding: 1rem 0 1rem 1.5rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + line-height: 1.5; + margin-bottom: 0rem; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: bold; } [data-page="admin-system-flash"] .cbi-section-descr { - font-weight: 600; - padding: 1rem 0 1rem 1.5rem; - color: #525f7f; + font-weight: 600; + padding: 1rem 0 1rem 1.5rem; + color: #525f7f; } /* wireless overview */ #cbi-wireless > #wifi_assoclist_table > .tr { - box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; } + #cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td { - right: 33px; - bottom: 33px; - left: 33px; - border-top: thin solid #ddd !important; + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; } + #cbi-wireless > #wifi_assoclist_table > .tr.table-titles { - box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; } + #cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th { - border-bottom: thin solid #ddd; - box-shadow: 0 -1px 0 0 #ddd; + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; } + #wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] { - width: 23rem; + width: 23rem; } [data-page="admin-network-dhcp"] .cbi-value { - padding: 0; + padding: 0; } [data-page="admin-network-dhcp"] [data-tab-active="true"] { - padding: 1rem 0 !important; + padding: 1rem 0 !important; } /* firewall */ #iptables { - margin: 0; + margin: 0; } + .Firewall form { - margin: 2rem 2rem 0 0; - padding: 0; - box-shadow: none; + margin: 2rem 2rem 0 0; + padding: 0; + box-shadow: none; } + #cbi-firewall-redirect table *, #cbi-network-switch_vlan table *, #cbi-firewall-zone table * { - font-size: small; + font-size: small; } + #cbi-firewall-redirect table input[type="text"], #cbi-network-switch_vlan table input[type="text"], #cbi-firewall-zone table input[type="text"] { - width: 5rem; + width: 5rem; } + #cbi-firewall-redirect table select, #cbi-network-switch_vlan table select, #cbi-firewall-zone table select { - min-width: 3.5rem; + min-width: 3.5rem; } + #cbi-network-switch_vlan .th, #cbi-network-switch_vlan .td { - flex-basis: 12%; + flex-basis: 12%; } + #cbi-firewall-zone .table, #cbi-network-switch_vlan .table { - display: block; + display: block; } + #cbi-firewall-zone .td, #cbi-network-switch_vlan .td { - width: 100%; + width: 100%; } [data-page="admin-network-firewall-custom"] #view p { - color: #fff; - margin-bottom: 1rem; + color: #fff; + margin-bottom: 1rem; } [data-page="admin-network-firewall-custom"] #view p textarea { - margin: 1.5rem; - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); - transition: box-shadow .25s, -webkit-box-shadow .25s; - border-radius: 2px; - width:95% !important; + margin: 1.5rem; + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + transition: box-shadow .25s, -webkit-box-shadow .25s; + border-radius: 2px; + width: 95% !important; } /* applyreboot fix */ #applyreboot-container { - margin: 2rem; + margin: 2rem; } + #applyreboot-section { - line-height: 300%; - margin: 2rem; + line-height: 300%; + margin: 2rem; } /* openvpn bug fix */ .OpenVPN a { - line-height: initial !important; + line-height: initial !important; } /* custom commands */ .commandbox { - width: 24% !important; - margin: 10px 0 0 10px !important; - padding: 0.5rem 1rem; - border-bottom: thin solid #ccc; - background: #eee; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + width: 24% !important; + margin: 10px 0 0 10px !important; + padding: 0.5rem 1rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } + .commandbox h3 { - line-height: normal !important; - overflow: hidden; - margin: 6px 0 !important; - white-space: nowrap; - text-overflow: ellipsis; + line-height: normal !important; + overflow: hidden; + margin: 6px 0 !important; + white-space: nowrap; + text-overflow: ellipsis; } + .commandbox div { - left: auto !important; + left: auto !important; } + .commandbox code { - position: absolute; - overflow: hidden; - max-width: 60%; - margin-left: 4px; - padding: 2px 3px; - white-space: nowrap; - text-overflow: ellipsis; + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + padding: 2px 3px; + white-space: nowrap; + text-overflow: ellipsis; } + .commandbox code:hover { - overflow-y: auto; - max-height: 50px; - white-space: normal; + overflow-y: auto; + max-height: 50px; + white-space: normal; } + .commandbox p:first-of-type { - margin-top: -6px; + margin-top: -6px; } + .commandbox p:nth-of-type(2) { - margin-top: 2px; + margin-top: 2px; } [data-page^="admin-system-commands"] .panel-title, [data-page^="command-cfg"] .mobile-hide, [data-page^="command-cfg"] .showSide { - display: none; + display: none; } + #command-rc-output .alert-message { - line-height: 1.42857143; - position: absolute; - top: 40px; - right: 32px; - max-width: 40%; - margin: 0; - animation: anim-fade-in 1.5s forwards; - word-break: break-word; - opacity: 0; + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + margin: 0; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; } + @keyframes anim-fade-in { - 100% { - opacity: 1; - } + 100% { + opacity: 1; + } } /* other fix */ input[type="checkbox"] { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - width: 16px !important; - height: 16px !important; - padding: 0; - cursor: pointer; - transition: all 0.2s; - position: absolute; - opacity: 0; - pointer-events: none; - + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid #dee2e6; + width: 16px !important; + height: 16px !important; + padding: 0; + cursor: pointer; + transition: all 0.2s; + position: absolute; + opacity: 0; + pointer-events: none; } + input[type="checkbox"]:checked { - border: 1px solid #5A8DEE; - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; - background-color: #5A8DEE; - background-size: 70%; - background-repeat: no-repeat; - background-position: center; + border: 1px solid #5A8DEE; + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; + background-color: #5A8DEE; + background-size: 70%; + background-repeat: no-repeat; + background-position: center; } /* IE hacks */ @media all and (-ms-high-contrast: none) { - .main > .main-left > .nav > .slide > .menu::before { - top: 30.25%; - } - .main > .main-left > .nav > li:last-child::before { - top: 20%; - } - .showSide::before { - top: -12px; - } + .main > .main-left > .nav > .slide > .menu::before { + top: 30.25%; + } + + .main > .main-left > .nav > li:last-child::before { + top: 20%; + } + + .showSide::before { + top: -12px; + } } + @media screen and (max-width: 1600px) { - header > .fill > .container > #logo { - margin: 0 2.5rem 0 0.5rem; - } - .main-left { - width: calc(0% + 13rem); - } - .main-right { - width: calc(100% - 13rem); - } + header > .fill > .container > #logo { + margin: 0 2.5rem 0 0.5rem; + } - .label { - padding: 0.2rem 0.6rem; - } - .cbi-value-title { - width: 15rem; - padding-right: 1.5rem; - } - .cbi-value-field .cbi-dropdown, + .main-left { + width: calc(0% + 13rem); + } + + .main-right { + width: calc(100% - 13rem); + } + + .label { + padding: 0.2rem 0.6rem; + } + + .cbi-value-title { + width: 15rem; + padding-right: 1.5rem; + } + + .cbi-value-field .cbi-dropdown, .cbi-value-field .cbi-input-select, .cbi-value input[type="text"], .cbi-value input[type="password"] { - min-width: 15rem; - } - #cbi-firewall-zone .cbi-input-select { - min-width: 9rem; - } - .cbi-input-textarea { - font-size: small; - } - .node-admin-status > .main fieldset li > a { - padding: 0.3rem 0.6rem; - } + min-width: 15rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + + .cbi-input-textarea { + font-size: small; + } + + .node-admin-status > .main fieldset li > a { + padding: 0.3rem 0.6rem; + } } -@media screen and (max-width: 1366px) { - header > .fill > .container { - cursor: default; - } - - .main-left { - width: calc(0% + 13rem); - } - .main-right { - width: calc(100% - 13rem); - } - .panel-title { - font-size: 1.1rem; - padding-bottom: 1rem; - } - table { - font-size: 0.7rem !important; - width: 100% !important; - } - .table .cbi-input-text { - width: 100%; - } - .cbi-value-field .cbi-dropdown, +@media screen and (max-width: 1366px) { + header > .fill > .container { + cursor: default; + } + + .main-left { + width: calc(0% + 13rem); + } + + .main-right { + width: calc(100% - 13rem); + } + + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + + table { + font-size: 0.7rem !important; + width: 100% !important; + } + + .table .cbi-input-text { + width: 100%; + } + + .cbi-value-field .cbi-dropdown, .cbi-value-field .cbi-input-select, .cbi-value input[type="text"], .cbi-value input[type="password"] { - min-width: 16rem; - } - #cbi-firewall-zone .cbi-input-select { - min-width: 4rem; - } - .main > .main-left > .nav > li, + min-width: 16rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 4rem; + } + + .main > .main-left > .nav > li, .main > .main-left > .nav > li a, .main > .main-left > .nav > .slide > .menu, .main > .main-left > .nav > li > [data-title="Logout"] { - font-size: 0.9rem; - } - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.8rem; - } - #modal_overlay { - top: 0rem; - } - [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { - display: block; - } - [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + font-size: 0.9rem; + } + + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.8rem; + } + + #modal_overlay { + top: 0rem; + } + [ data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + [ data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), [data-page="admin-network-hosts"] .table, [data-page="admin-network-routes"] .table { - overflow-y: visible; - } - .commandbox { - width: 32% !important; - } + overflow-y: visible; + } + + .commandbox { + width: 32% !important; + } } + @media screen and (max-width: 1152px) { - header > .fill > .container > #logo { - display: none; - } - header > .fill > .container > .brand { - position: relative; - } - html, + header > .fill > .container > #logo { + display: none; + } + + header > .fill > .container > .brand { + position: relative; + } + + html, .main { - overflow-y: visible; - } - .main > .loading > span { - top: 25%; - } - .main-left { - width: calc(0% + 13rem); - } - .main-right { - width: calc(100% - 13rem); - } - body:not(.logged-in) .showSide { - visibility: hidden; - width: 0; - margin: 0; - } - .node-main-login > .main .cbi-value-title { - text-align: left; - } - .cbi-value-title { - width: 10rem; - padding-right: 1rem; - } - .cbi-value-field .cbi-dropdown, + overflow-y: visible; + } + + .main > .loading > span { + top: 25%; + } + + .main-left { + width: calc(0% + 13rem); + } + + .main-right { + width: calc(100% - 13rem); + } + + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + + .node-main-login > .main .cbi-value-title { + text-align: left; + } + + .cbi-value-title { + width: 10rem; + padding-right: 1rem; + } + + .cbi-value-field .cbi-dropdown, .cbi-value-field .cbi-input-select, .cbi-value input[type="text"] { - width: 16rem; - min-width: 16rem; - } + width: 16rem; + min-width: 16rem; + } /*.cbi-value input[type="password"],*/ - .cbi-value input[name^="pw"], + .cbi-value input[name^="pw"], .cbi-value input[data-update="change"]:nth-child(2) { - width: 13rem !important; - min-width: 13rem; - } - #diag-rc-output > pre, + width: 13rem !important; + min-width: 13rem; + } + + #diag-rc-output > pre, #command-rc-output > pre, [data-page="admin-services-wol"] .notice code { - font-size: 1rem; - } - .table { - display: block; - } - .Interfaces .table { - overflow-x: hidden; - } - #packages.table { - display: grid; - } - .tr { - display: flex; - flex-direction: row; - flex-wrap: wrap; - } - .Overview .table[width="100%"] > .tr { - flex-wrap: nowrap; - } - .tr.placeholder { - border-bottom: thin solid #ddd; - } - .tr.placeholder > .td, + font-size: 1rem; + } + + .table { + display: block; + } + + .Interfaces .table { + overflow-x: hidden; + } + + #packages.table { + display: grid; + } + + .Overview .table[width="100%"] > .tr { + flex-wrap: nowrap; + } + + .tr.placeholder { + border-bottom: thin solid #ddd; + } + + .tr.placeholder > .td, #cbi-firewall .tr > .td, #cbi-network .tr:nth-child(2) > .td, .cbi-section #wifi_assoclist_table .tr > .td { - border-top: 0; - } - .th, + border-top: 0; + } + + .th, .td { - display: inline-block; - align-self: flex-start; - flex: 2 2 25%; - text-overflow: ellipsis; - word-wrap: break-word; - } - .td select, + display: inline-block; + align-self: flex-start; + flex: 2 2 25%; + text-overflow: ellipsis; + word-wrap: break-word; + } + + .td select, .td input[type="text"] { - width: 100%; - word-wrap: normal; - } - .td [data-dynlist] > input, + width: 100%; + word-wrap: normal; + } + + .td [data-dynlist] > input, .td input.cbi-input-password { - width: calc(100% - 1.5rem); - } - .td[data-type="button"], + width: calc(100% - 1.5rem); + } + + .td[data-type="button"], .td[data-type="fvalue"] { - flex: 1 1 12.5%; - text-align: left; - } - .th.cbi-value-field, + flex: 1 1 12.5%; + text-align: left; + } + + .th.cbi-value-field, .td.cbi-value-field, .th.cbi-section-table-cell, .td.cbi-section-table-cell { - flex-basis: auto; - padding-top: 1rem; - } - .cbi-section-table-row { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-between; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - } - .td.cbi-value-field, + flex-basis: auto; + padding-top: 1rem; + } + + .td.cbi-value-field, .cbi-section-table-cell { - display: inline-block; - flex: 10 10 auto; - flex-basis: 50%; - text-align: center; - } - .td.cbi-section-actions { - vertical-align: bottom; - } - .tr.table-titles, + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + + .td.cbi-section-actions { + vertical-align: bottom; + } + + .tr.table-titles, .tr.cbi-section-table-titles, .tr.cbi-section-table-descr { - display: none; - } - .tr[data-title]::before, + display: none; + } + + .tr[data-title]::before, .tr.cbi-section-table-titles.named::before { - font-size: 0.9rem; - display: block; - flex: 1 1 100%; - border-bottom: thin solid rgba(0, 0, 0, 0.26); - background: #e9ecef; - } - .td[data-title], + font-size: 0.9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, 0.26); + background: #e9ecef; + } + + .td[data-title], [data-page^="admin-status-realtime"] .td[id] { - text-align: left; - } - .td[data-title]::before { - display: block; - } - .cbi-button + .cbi-button { - margin-left: 0; - } - .td.cbi-section-actions > * > *, + text-align: left; + } + + .td[data-title]::before { + display: block; + } + + .cbi-button + .cbi-button { + margin-left: 0; + } + + .td.cbi-section-actions > * > *, .td.cbi-section-actions > * > form > * { - margin: 2.1px 3px; - } - .Firewall form { - position: static !important; - margin: 0 0 2rem 0; - padding: 2rem; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - } - .Firewall form input { - width: 100% !important; - margin: 0; - margin-top: 1rem; - } - .Firewall .center, + margin: 2.1px 3px; + } + + .Firewall form { + position: static !important; + margin: 0 0 2rem 0; + padding: 2rem; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + } + + .Firewall form input { + width: 100% !important; + margin: 0; + margin-top: 1rem; + } + + .Firewall .center, .Firewall .center::before { - text-align: left !important; - } - .commandbox { - width: 100% !important; - margin-left: 0 !important; - } + text-align: left !important; + } + + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } } + @media screen and (max-width: 768px) { - header{ - display:block; - } - body { - font-size: 0.8rem; - } - .tabs > li > a, .cbi-tabmenu > li > a{ - padding: 0.7rem 1.2rem; - } - .btn, button, .cbi-button, input[type=button], input[type=submit], input[type=reset]{ - padding: 0.5rem 1.2rem !important; - } - .cbi-progressbar::after { - font-size: 0.95em; - line-height: 1.5; - } - .main-left { - position: fixed; - z-index: 100; - width: 0; - } - .main-right { - width: 100%; - } - .main-right > #maincontent{ - margin-top:0.5rem; - } - .showSide { - padding: 0.1rem; - position: relative; - z-index: 99; - top:-0.7rem; - display: inline-block !important; - } - .showSide::before { - font-family: 'argon' !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\e20e"; - font-size: 1.7rem; - } - header > .fill > .container > .brand { - display: inline-block; - } - .main > .main-left > .nav > .slide > .menu { - font-size: 1.2rem; - } - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.8rem; - } - .cbi-section > div { - overflow-x: auto; - } -.cbi-map >.cbi-section{ - padding:0 1rem !important; + header { + display: block; + } + + body { + font-size: 0.8rem; + } + + .tabs > li > a, .cbi-tabmenu > li > a { + padding: 0.7rem 1.2rem; + } + + .btn, button, .cbi-button, input[type=button], input[type=submit], input[type=reset] { + padding: 0.5rem 1.2rem !important; + } + + .cbi-progressbar::after { + font-size: 0.95em; + line-height: 1.5; + } + + .main-left { + position: fixed; + z-index: 100; + width: 0; + } + + .main-right { + width: 100%; + } + + .main-right > #maincontent { + margin-top: 0.5rem; + } + + .showSide { + padding: 0.1rem; + position: relative; + z-index: 99; + top: -0.7rem; + display: inline-block !important; + } + + .showSide::before { + font-family: 'argon' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e20e"; + font-size: 1.7rem; + } + + header > .fill > .container > .brand { + display: inline-block; + } + + .main > .main-left > .nav > .slide > .menu { + font-size: 1.2rem; + } + + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.8rem; + } + + .cbi-section > div { + overflow-x: auto; + } + + .cbi-map >.cbi-section { + padding: 0 1rem !important; } } + @media screen and (max-width: 600px) { - .mobile-hide { - display: none; - } - #maincontent > .container { - margin: 1rem 0 1rem 0; - } - .cbi-value-title { - text-align: left; - } - [data-page="admin-system-flash"] legend { - padding: 1rem 0 1rem 1rem; - } - [data-page="admin-system-flash"] .cbi-section-descr { - padding: 1rem 0 1rem 1rem; - } - [data-page="admin-system-flash"] .cbi-value { - padding: 0 1rem; - } - [data-page="admin-network-dhcp"] [data-tab-active="true"] { - padding: 1rem 1rem !important; - } - body { - overflow-x: hidden; - } - .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { - width: 16rem; - } - .node-main-login footer { - display: none; - } -} -@media screen and (min-width: 600px) { - ::-webkit-scrollbar { - width: 10px; - height: 10px; - } - ::-webkit-scrollbar, - ::-webkit-scrollbar-corner { - background: transparent; - } - ::-webkit-scrollbar-thumb { - background: #9e9e9e; - } - ::-webkit-scrollbar-thumb:hover { - background: #757575; - } - ::-webkit-scrollbar-thumb:active { - background: #424242; - } -} - -.waves-input-wrapper{ - background-color:#475F7B; -} -.waves-input-wrapper{ - background-color:#475F7B; -} - -.cbi-button,.btn{ - background-color: #00CFDD; + .mobile-hide { + display: none; } -.cbi-button.reconnect{ -background-color: #00CFDD !important; -} + #maincontent > .container { + margin: 1rem 0 1rem 0; + } -.cpu .cbi-progressbar > div{ + .cbi-value-title { + text-align: left; + } + [ data-page="admin-system-flash"] legend { + padding: 1rem 0 1rem 1rem; + } + [ data-page="admin-system-flash"] .cbi-section-descr { + padding: 1rem 0 1rem 1rem; + } + [ data-page="admin-system-flash"] .cbi-value { + padding: 0 1rem; + } + [ data-page="admin-network-dhcp"] [data-tab-active="true"] { + padding: 1rem 1rem !important; + } + + body { + overflow-x: hidden; + } + + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + width: 16rem; + } + + .node-main-login footer { + display: none; + } +} + +@media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: #9e9e9e; + } + + ::-webkit-scrollbar-thumb:hover { + background: #757575; + } + + ::-webkit-scrollbar-thumb:active { + background: #424242; + } +} + +.waves-input-wrapper { + background-color: #475F7B; +} + +.waves-input-wrapper { + background-color: #475F7B; +} + +.cbi-button,.btn { + background-color: #00CFDD; +} + +.cbi-button.reconnect { + background-color: #00CFDD !important; +} + +.cpu .cbi-progressbar > div { background-color: #5A8DEE !important; } -.memory .cbi-progressbar > div{ + +.memory .cbi-progressbar > div { background-color: #FDAC41 !important; } -.cbi-map style+fieldset.cbi-section:first-of-type{ - box-shadow:none !important; - display: block; - text-align: center; - overflow: hidden; - margin: 0.5rem 0; - background:none; - padding:0; -} -.cbi-map style+fieldset.cbi-section:first-of-type p font{ -position: relative; - display: inline-block; - padding: 0 1rem; +.cbi-map style+fieldset.cbi-section:first-of-type { + box-shadow: none !important; + display: block; + text-align: center; + overflow: hidden; + margin: 0.5rem 0; + background: none; + padding: 0; } + +.cbi-map style+fieldset.cbi-section:first-of-type p font { + position: relative; + display: inline-block; + padding: 0 1rem; +} + .cbi-map style+fieldset.cbi-section:first-of-type p font:before, .cbi-map style+fieldset.cbi-section:first-of-type p font:after { - border-color: #FDAC41 !important; + border-color: #FDAC41 !important; content: ""; - position: absolute; - top: 50%; - width: 9999px; - border-top: 2px solid #DFE3E7; + position: absolute; + top: 50%; + width: 9999px; + border-top: 2px solid #DFE3E7; } + .cbi-map style+fieldset.cbi-section:first-of-type p font:before { - right: 100%; + right: 100%; } + .cbi-map style+fieldset.cbi-section:first-of-type p font:after { - left: 100%; + left: 100%; } -.cbi-map style+fieldset.cbi-section:first-of-type p em{ - display:block; + +.cbi-map style+fieldset.cbi-section:first-of-type p em { + display: block; } -.cbi-section .cbi-section{ -box-shadow:none !important; + +.cbi-section .cbi-section { + box-shadow: none !important; } /* Checkboxes ========================================================================== */ /* Remove default checkbox */ -[type="checkbox"] { - /* checkbox aspect */ -} - [type="checkbox"] + label:not(.lever) { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } [type="checkbox"] + label:not(.lever):before, [type="checkbox"]:not(.filled-in) + label:not(.lever):after { - content: ''; - position: absolute; - top: 0.4rem; - left: 0; - width: 15px; - height: 15px; - z-index: 0; - border: 2px solid #5a5a5a; - border-radius: 1px; - margin-top: 3px; - -webkit-transition: .2s; - transition: .2s; + content: ''; + position: absolute; + top: 0.4rem; + left: 0; + width: 15px; + height: 15px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 3px; + -webkit-transition: .2s; + transition: .2s; } [type="checkbox"]:not(.filled-in) + label:not(.lever):after { - border: 0; - -webkit-transform: scale(0); - transform: scale(0); + border: 0; + -webkit-transform: scale(0); + transform: scale(0); } [type="checkbox"]:not(:checked):disabled + label:not(.lever):before { - border: none; - background-color: rgba(0, 0, 0, 0.42); + border: none; + background-color: rgba(0, 0, 0, 0.42); } [type="checkbox"].tabbed:focus + label:not(.lever):after { - -webkit-transform: scale(1); - transform: scale(1); - border: 0; - border-radius: 50%; - -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); - background-color: rgba(0, 0, 0, 0.1); + -webkit-transform: scale(1); + transform: scale(1); + border: 0; + border-radius: 50%; + -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1); + background-color: rgba(0, 0, 0, 0.1); } [type="checkbox"]:checked + label:not(.lever):before { - top: 0.1rem; - left: -5px; - width: 9px; - height: 18px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid orangered; - border-bottom: 2px solid orangered; - -webkit-transform: rotate(40deg); - transform: rotate(40deg); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + top: 0.1rem; + left: -5px; + width: 9px; + height: 18px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid orangered; + border-bottom: 2px solid orangered; + -webkit-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"]:checked:disabled + label:before { - border-right: 2px solid rgba(0, 0, 0, 0.42); - border-bottom: 2px solid rgba(0, 0, 0, 0.42); + border-right: 2px solid rgba(0, 0, 0, 0.42); + border-bottom: 2px solid rgba(0, 0, 0, 0.42); } /* Indeterminate checkbox */ [type="checkbox"]:indeterminate + label:not(.lever):before { - top: -11px; - left: -12px; - width: 10px; - height: 22px; - border-top: none; - border-left: none; - border-right: 2px solid orangered; - border-bottom: none; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + top: -11px; + left: -12px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid orangered; + border-bottom: none; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"]:indeterminate:disabled + label:not(.lever):before { - border-right: 2px solid rgba(0, 0, 0, 0.42); - background-color: transparent; + border-right: 2px solid rgba(0, 0, 0, 0.42); + background-color: transparent; } [type="checkbox"].filled-in + label:not(.lever):after { - border-radius: 2px; + border-radius: 2px; } [type="checkbox"].filled-in + label:not(.lever):before, [type="checkbox"].filled-in + label:not(.lever):after { - content: ''; - left: 0; - position: absolute; + content: ''; + left: 0; + position: absolute; /* .1s delay is for check animation */ - -webkit-transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; - transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; - z-index: 1; + -webkit-transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; } [type="checkbox"].filled-in:not(:checked) + label:not(.lever):before { - width: 0; - height: 0; - border: 3px solid transparent; - left: 6px; - top: 10px; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"].filled-in:not(:checked) + label:not(.lever):after { - height: 20px; - width: 20px; - background-color: transparent; - border: 2px solid #5a5a5a; - top: 0px; - z-index: 0; + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; } [type="checkbox"].filled-in:checked + label:not(.lever):before { - top: 0; - left: 1px; - width: 8px; - height: 13px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid #fff; - border-bottom: 2px solid #fff; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } [type="checkbox"].filled-in:checked + label:not(.lever):after { - top: 0; - width: 20px; - height: 20px; - border: 2px solid orangered; - background-color: orangered; - z-index: 0; + top: 0; + width: 20px; + height: 20px; + border: 2px solid orangered; + background-color: orangered; + z-index: 0; } [type="checkbox"].filled-in.tabbed:focus + label:not(.lever):after { - border-radius: 2px; - border-color: #5a5a5a; - background-color: rgba(0, 0, 0, 0.1); + border-radius: 2px; + border-color: #5a5a5a; + background-color: rgba(0, 0, 0, 0.1); } [type="checkbox"].filled-in.tabbed:checked:focus + label:not(.lever):after { - border-radius: 2px; - background-color: orangered; - border-color: orangered; + border-radius: 2px; + background-color: orangered; + border-color: orangered; } [type="checkbox"].filled-in:disabled:not(:checked) + label:not(.lever):before { - background-color: transparent; - border: 2px solid transparent; + background-color: transparent; + border: 2px solid transparent; } [type="checkbox"].filled-in:disabled:not(:checked) + label:not(.lever):after { - border-color: transparent; - background-color: #949494; + border-color: transparent; + background-color: #949494; } [type="checkbox"].filled-in:disabled:checked + label:not(.lever):before { - background-color: transparent; + background-color: transparent; } [type="checkbox"].filled-in:disabled:checked + label:not(.lever):after { - background-color: #949494; - border-color: #949494; -} -.controls > *:nth-child(2), .controls > *:nth-child(3){ -position:relative; -} -.controls>div .focus-input{ - top: 1.53rem; -} -#indicators{ - cursor: pointer; - position:absolute; - top:1.5rem; - right:1.5rem; - z-index:99; + background-color: #949494; + border-color: #949494; } -.cbi-section > h3:first-child, .panel-title{ - font-size:1.1rem !important; +.controls > *:nth-child(2), .controls > *:nth-child(3) { + position: relative; } + +.controls>div .focus-input { + top: 1.53rem; +} + +#indicators { + cursor: pointer; + position: absolute; + top: 1.5rem; + right: 1.5rem; + z-index: 99; +} + +.cbi-section > h3:first-child, .panel-title { + font-size: 1.1rem !important; +} + h2 { - font-size: 1.4rem !important; + font-size: 1.4rem !important; } -.main .main-left .nav li.slide .menu{ - font-size:0.9rem !important; - margin-top: 0.4rem !important; - margin-bottom: 0.4rem !important; - padding: 0.5rem 0 0.5rem 2.5rem !important; -} -.main .main-left .nav li.slide .slide-menu li{ + + + +.main .main-left .nav li.slide .slide-menu li { padding: 0.4rem 0rem !important; } -h3{ - font-size:1.1rem !important; +h3 { + font-size: 1.1rem !important; padding: 1rem 2rem !important; } -code,.cbi-progressbar::after{ + +code,.cbi-progressbar::after { font-size-adjust: none !important; font-family: inherit !important; - font-size: 0.9em !important; + font-size: 0.9em !important; } -[data-page="admin-system-flash"] legend{ +[data-page="admin-system-flash"] legend { font-size: 1.1rem !important; - padding-bottom:0.6rem !important; + padding-bottom: 0.6rem !important; } -.main .main-left .nav li.slide .menu::before{ - font-size:1.1rem !important; +.main .main-left .nav>li>a::before { + font-size: 1.1rem !important; } -.td.version{ -word-break: normal !important; + +.td.version { + word-break: normal !important; } -.node-main-login .main .main-right .login-bg{ -background-color:white !important; + +.node-main-login .main .main-right .login-bg { + background-color: white !important; } -.cbi-map >.cbi-section{ - padding:0 2rem; + +.cbi-map >.cbi-section { + padding: 0 2rem; } -.cbi-map >.cbi-section .cbi-value{ - padding-left:1rem; - padding-right:1rem; + +.cbi-map >.cbi-section .cbi-value { + padding-left: 1rem; + padding-right: 1rem; } -.cbi-section ~ .cbi-section> .panel-title{ - padding-top:0; + +.cbi-section ~ .cbi-section> .panel-title { + padding-top: 0; } -#cbi-openclash .cbi-map-descr{ - color:#404040 + +#cbi-openclash .cbi-map-descr { + color: #404040 } -input,select{ -height: 2.2rem; -background: none; + +input,select { + height: 2.2rem; + background: none; } -input[type=button],input[type=submit],input[type=reset]{ - height:auto !important; + +input[type=button],input[type=submit],input[type=reset] { + height: auto !important; } + .btn,button, .cbi-button,input[type=button],input[type=submit],input[type=reset],.waves-input-wrapper { - height:auto !important; - padding: 0.6rem 1.6rem; - line-height: 1rem; - webkit-box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + height: auto !important; + width: auto !important; + padding: 0.6rem 1.6rem; + line-height: 1rem; + webkit-box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); border-radius: 2px; - transition:all .20s linear; - top:0; - margin-left: 0.5rem; - margin-top:0.5rem; - } -.btn:first-child,button:first-child, - .cbi-button:first-child,input[type=button]:first-child,input[type=submit]:first-child,input[type=reset]:first-child,.waves-input-wrapper:first-child { - margin-left:0; -} -i.waves-input-wrapper{ - padding: 0 !important; -} -i input{ - margin:0 !important -} -.controls > * > .btn{ - flex-basis: auto !important; -} -h2,.cbi-map-descr{ - padding-left:2rem; -} -.cbi-map >.cbi-section .cbi-section-table,.cbi-map >.cbi-section .cbi-tabmenu,.cbi-map >.cbi-section .table{ - margin-left: -1.95rem !important; - width:105.5% !important; + transition: all .20s linear; + top: 0; + margin-left: 0.5rem; } -.admin-status-overview h2.content{ - display:none; +.btn:first-child,button:first-child, + .cbi-button:first-child,input[type=button]:first-child,input[type=submit]:first-child,input[type=reset]:first-child,.waves-input-wrapper:first-child { + margin-left: 0; } -#view>.cbi-section:first-child{ - padding-top:0; + +i.waves-input-wrapper { + padding: 0 !important; } -.node-admin-status div{ - border:none !important; + +i input { + margin: 0 !important } + +.controls > * > .btn { + flex-basis: auto !important; +} + +h2,.cbi-map-descr { + padding-left: 2rem; +} + +@media screen and (max-width: 1680px) and (min-width: 1280px) { +.cbi-map >.cbi-section .cbi-section-table,.cbi-map >.cbi-section .cbi-tabmenu,.cbi-map >.cbi-section .table { + margin-left: -1.95rem !important; + width: 105.5% !important; +} +} + +.admin-status-overview h2.content { + display: none; +} + +#view>.cbi-section:first-child { + padding-top: 0; +} + +.node-admin-status div { + border: none !important; +} + .cbi-section-table .tr .td:first-child,.cbi-section-table .tr .th:first-child, .cbi-section-table tr td:first-child,.cbi-section-table tr th:first-child, .table .tr .td:first-child,.table .tr .th:first-child, .table .tr:before, -.cbi-section-table tr:before -{ - padding-left:2rem !important; +.cbi-section-table tr:before { + padding-left: 2rem !important; } -.node-status-overview table tr td:first-child{ - padding-left:3rem !important; + +.node-status-overview table tr td:first-child { + padding-left: 3rem !important; vertical-align: middle !important; } -ul.errors li{ -margin-bottom: 1rem; + +ul.errors li { + margin-bottom: 1rem; } -.Wireless .cbi-section{ -padding:0 2rem; + +.Wireless .cbi-section { + padding: 0 2rem; } - i input{ - margin:0 !important; - } - .cbi-value>i{ - margin-left:2rem; - } + +i input { + margin: 0 !important; +} + +.cbi-value>i { + margin-left: 2rem; +} + .cbi-section-table-row > .cbi-value-field .cbi-input-select { - min-width: 5rem !important; + min-width: 5rem !important; } + #cbi-passwall .status .red, #cbi-passwall .status .green { font-size: 0.83rem !important; - line-height: 2rem; + line-height: 2rem; } -.waves-input-wrapper .waves-button-input{ + +.waves-input-wrapper .waves-button-input { line-height: 1rem; } -.cbi-dropdown.waves-effect{ + +.cbi-dropdown.waves-effect { display: inline-flex; } -cbi-button.cbi-button-neutral{ + +cbi-button.cbi-button-neutral { padding: 0.1rem 0.4rem; } -#cbi-AdGuardHome-AdGuardHome .waves-input-wrapper>input{ - color:#fff !important; + +#cbi-AdGuardHome-AdGuardHome .waves-input-wrapper>input { + color: #fff !important; } -input[type=password]+.cbi-button.cbi-button-neutral{ + +input[type=password]+.cbi-button.cbi-button-neutral { padding: 0.1rem 0.4rem; - color:#fff !important; + color: #fff !important; } -.main-right>hr{ - height: 6px; - background-color: rgba(255, 0, 27, 0.95); - background: linear-gradient(90deg,#e75239 0%,#e75239 12.5%,#ff961c 12.5%,#ff961c 25%,#ffcc27 25%,#ffcc27 37.5%,#fce62f 37.5%,#fce62f 50%,#cde35b 50%,#cde35b 62.5%,#82cc33 62.5%,#82cc33 75%,#41bece 75%,#41bece 87.5%,#049cdb 87.5%,#049cdb 100%); + +.main-right>hr { + height: 6px; + background-color: rgba(255, 0, 27, 0.95); + background: linear-gradient(90deg,#e75239 0%,#e75239 12.5%,#ff961c 12.5%,#ff961c 25%,#ffcc27 25%,#ffcc27 37.5%,#fce62f 37.5%,#fce62f 50%,#cde35b 50%,#cde35b 62.5%,#82cc33 62.5%,#82cc33 75%,#41bece 75%,#41bece 87.5%,#049cdb 87.5%,#049cdb 100%); background-position: 50% 0; - box-shadow: 0 1px 2px rgba(0,0,0,.0625) inset; - margin: 0 0 10px; - border: none; - opacity: 0.9; + box-shadow: 0 1px 2px rgba(0,0,0,.0625) inset; + margin: 0 0 10px; + border: none; + opacity: 0.9; } -div[id^="cbi-unblockmusic"] .cbi-button{ - top:-1.2rem; + +div[id^="cbi-unblockmusic"] .cbi-button { + top: -1.2rem; } -[data-page^="admin-network-wifi"] form{ +[data-page^="admin-network-wifi"] form { padding-left: 1.5rem; } -[data-page^="admin-network-wifi"] form td{ +[data-page^="admin-network-wifi"] form td { padding-left: 1.5rem; } -.command-output{ - padding: 0 2rem; + +.command-output { + padding: 0 2rem; +} + +.chromeframe { + padding: 2rem 3rem; + margin: 0 auto; + font-size: 16px; + font-weight: bold; + color: #fff; + position: absolute; + top: 10rem; + width: 100%; + z-index: 9999; + text-align: center; + background: #5A8DEE; +} + +.chromeframe { + display: none; +} + +.chromeframe a { + color: orangered; +} + +.landscape { + position: absolute; + width: 100%; + height: 100%; } diff --git a/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header.htm b/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header.htm index be1fecf6b2..24c5811170 100644 --- a/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header.htm +++ b/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header.htm @@ -42,15 +42,6 @@ local c = tree local i, r - function glob(...) - local iter, code, msg = fs.glob(...) - if iter then - return nutil.consume(iter) - else - return nil, code, msg - end - end - -- tag all nodes leading to this page for i, r in ipairs(request) do if c.nodes and c.nodes[r] then @@ -189,8 +180,6 @@ end math.randomseed(os.time()) - local bgTable = glob("/www/luci-static/argon/img/*") - local bgcount = table.getn(bgTable) -%> diff --git a/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header_login.htm b/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header_login.htm index 3a232210cc..c7b55bce48 100644 --- a/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header_login.htm +++ b/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/header_login.htm @@ -41,16 +41,7 @@ local c = tree local i, r - - function glob(...) - local iter, code, msg = fs.glob(...) - if iter then - return nutil.consume(iter) - else - return nil, code, msg - end - end - + -- tag all nodes leading to this page for i, r in ipairs(request) do if c.nodes and c.nodes[r] then @@ -188,9 +179,7 @@ end end - math.randomseed(os.time()) - local bgTable = glob("/www/luci-static/argon/img/*") - local bgcount = table.getn(bgTable) + math.randomseed(os.time()) -%> @@ -233,22 +222,5 @@ - \ No newline at end of file +

您使用的浏览器过于老旧, +请使用 Edge , Firefox 等高级浏览器.

diff --git a/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/sysauth.htm b/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/sysauth.htm index 02a88cbef5..3b8618f17b 100644 --- a/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/sysauth.htm +++ b/package/ctcgfw/luci-theme-edge/luasrc/view/themes/edge/sysauth.htm @@ -5,8 +5,9 @@ -%> <%+header_login%> - -
>
+
+
>
+
-<% -local uci = require "luci.model.uci".cursor() -local fs = require "nixio.fs" -local https_key = uci:get("uhttpd", "main", "key") -local https_port = uci:get("uhttpd", "main", "listen_https") -if type(https_port) == "table" then - https_port = https_port[1] -end - -if https_port and fs.access(https_key) then - https_port = https_port:match("(%d+)$") -%> - - - -<% end %> - + <%+footer%> diff --git a/package/ctcgfw/luci-theme-edge/root/etc/uci-defaults/30_luci-theme-edge b/package/ctcgfw/luci-theme-edge/root/etc/uci-defaults/30_luci-theme-edge old mode 100755 new mode 100644 From bdcd93bde5e3b7ac0e534450ea2f0234db103121 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 29 Oct 2020 22:31:33 +0800 Subject: [PATCH 4/8] luci-app-vssr: sync with upstream source --- .../luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua | 5 +++++ package/ctcgfw/luci-app-vssr/luasrc/view/vssr/ssrurl.htm | 3 +++ .../luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua | 3 ++- .../ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua | 6 +++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua b/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua index 83239f2d88..c336e87a23 100644 --- a/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua +++ b/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua @@ -342,6 +342,11 @@ o:depends('transport', 'kcp') o.default = 2 o.rmempty = true +o = s:option(Value, 'seed', translate('Seed')) +o.depends('transport', 'kcp') +o.default = '' +o.rmempty = true + o = s:option(Flag, 'congestion', translate('Congestion')) o:depends('transport', 'kcp') o.rmempty = true diff --git a/package/ctcgfw/luci-app-vssr/luasrc/view/vssr/ssrurl.htm b/package/ctcgfw/luci-app-vssr/luasrc/view/vssr/ssrurl.htm index b301ca0411..9d8075c515 100644 --- a/package/ctcgfw/luci-app-vssr/luasrc/view/vssr/ssrurl.htm +++ b/package/ctcgfw/luci-app-vssr/luasrc/view/vssr/ssrurl.htm @@ -280,6 +280,9 @@ try { el('.kcp_guise').value = ssm.type; } catch (err) { } + try { + el('.seed').value = ssm.seed; + } catch (err) { } } if (ssm.tls == "tls") { try { diff --git a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua index 0dfc384c9d..4470ea8b24 100755 --- a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua +++ b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/genconfig_v2ray.lua @@ -197,7 +197,8 @@ function gen_outbound(server_node, tags, local_ports) congestion = (server.congestion == '1') and true or false, readBufferSize = tonumber(server.read_buffer_size), writeBufferSize = tonumber(server.write_buffer_size), - header = {type = server.kcp_guise} + header = {type = server.kcp_guise}, + seed = server.seed } or nil, wsSettings = (server.transport == 'ws') and (server.ws_path ~= nil or server.ws_host ~= nil) and diff --git a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua index f7168bedb8..088e6911fa 100644 --- a/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua +++ b/package/ctcgfw/luci-app-vssr/root/usr/share/vssr/subscribe.lua @@ -264,7 +264,11 @@ local function processData(szType, content) result.alias = '[' .. content.airport .. '] ' .. content.remarks end if not result.alias then - result.alias = result.server .. ':' .. result.server_port + if result.server and result.server_port then + result.alias = result.server .. ':' .. result.server_port + else + result.alias = "NULL" + end end -- alias 不参与 hashkey 计算 local alias = result.alias From 209028e45440dfcccb684f5226e02443b468844f Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 29 Oct 2020 22:33:35 +0800 Subject: [PATCH 5/8] luci-app-serverchan: sync with upstream source --- .../root/usr/bin/serverchan/serverchan | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan index 69e71d55a0..f4e124b550 100755 --- a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan +++ b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan @@ -214,10 +214,9 @@ function get_client_usage(){ [ "$client_usage" -ne "1" ] && return [ -z "$client_usage_max" ] && return [ -z "$get_client_usage_time" ] && get_client_usage_time=`date +%s` - ( echo ${client_usage_max: -1}|grep -q "K\|k" ) && client_usage_max=`expr ${client_usage_max%?} \* 1024` - ( echo ${client_usage_max: -1}|grep -q "M\|m" ) && client_usage_max=`expr ${client_usage_max%?} \* 1048576` - ( echo ${client_usage_max: -1}|grep -q "G\|g" ) && client_usage_max=`expr ${client_usage_max%?} \* 1073741824` - + ( echo $client_usage_max|sed -r 's/.*(.)$/\1/'|grep -q "K\|k" ) && client_usage_max=`expr ${client_usage_max%?} \* 1024` + ( echo $client_usage_max|sed -r 's/.*(.)$/\1/'|grep -q "M\|m" ) && client_usage_max=`expr ${client_usage_max%?} \* 1048576` + ( echo $client_usage_max|sed -r 's/.*(.)$/\1/'|grep -q "G\|g" ) && client_usage_max=`expr ${client_usage_max%?} \* 1073741824` [ "$client_usage_disturb" -eq "0" ] || [ -z "$client_usage_disturb" ] && [ -f "${dir}ipAddress" ] && local MACLIST=`cat ${dir}ipAddress|awk '{print $2}'|grep -v "^$"|sort -u` [ ! -z "$client_usage_disturb" ] && [ "$client_usage_disturb" -eq "1" ] && [ ! -z "$client_usage_whitelist" ] && local MACLIST=`echo "$client_usage_whitelist"` [ -z "$MACLIST" ] && return @@ -282,8 +281,8 @@ function time_for_humans { # 计算字符真实长度 function length_str { [ ! "$1" ] && return - local length_zh=`echo "$1"|awk '{print gensub(/[\u4e00-\u9fa5]/,"","g",$0)}'|awk -F "" '{print NF}'` - local length_en=`echo "$1"|awk '{print gensub(/[^\u4e00-\u9fa5]/,"","g",$0)}'|awk -F "" '{print NF}'` + local length_zh=`echo "$1"|awk '{print gensub(/[\u4e00-\u9FA5A-Za-z0-9_]/,"","g",$0)}'|awk -F "" '{print NF}'` + local length_en=`echo "$1"|awk '{print gensub(/[^\u4e00-\u9FA5A-Za-z0-9_]/,"","g",$0)}'|awk -F "" '{print NF}'` echo `expr $length_zh / 3 \* 2 + $length_en` } @@ -291,12 +290,16 @@ function length_str { function cut_str { [ ! "$1" ] && return [ ! "$2" ] && return + [ `length_str $1` -le "$2" ] && echo "$1" && return local temp_length=$2 - while [ $(printf "%d" \'`echo "$1"|cut -c $temp_length`) -ge "128" ] && [ $(printf "%d" \'`echo "$1"|cut -c $temp_length`) -lt "224" ] ; do + while [ $(length_str `echo "$1"|cut -c -$temp_length`) -lt "$2" ]; do + temp_length=`expr $temp_length + 1` + done + while [ $(printf "%d" \'`echo "$1"|cut -c $temp_length`) -ge "128" ] && [ $(printf "%d" \'`echo "$1"|cut -c $temp_length`) -lt "224" ]; do temp_length=`expr $temp_length + 1` done temp_length=`expr $temp_length - 1` - echo "$1"|cut -c -$temp_length + echo $(echo "$1"|cut -c -$temp_length)"*" } # 在线设备列表 @@ -311,7 +314,7 @@ function serverchan_first(){ done wait unset ip IPLIST - local IPLIST=`cat /proc/net/arp|grep "0x2\|0x6"|awk '{print $1}'|grep -v "^$"|sort -u` + local IPLIST=`cat /proc/net/arp|grep "0x2\|0x6"|awk '{print $1}'|grep -v "^169.254."|grep -v "^$"|sort -u` for ip in $IPLIST; do read -u 5 { @@ -654,7 +657,7 @@ function up(){ cat ${dir}tmp_downlist|grep -w ${1}|grep -v "^$"|sort -u >> ${dir}ipAddress sed -i "/$1/d" ${dir}tmp_downlist else - usage down $1 + usage down $ip_mac local ip_name=`getname ${1} ${ip_mac}` blackwhitelist ${ip_mac};local ip_blackwhite=$? echo "$1 ${ip_mac} ${ip_name} `date +%s` ${ip_interface}" >> ${dir}ipAddress @@ -663,13 +666,13 @@ function up(){ [ -f "${dir}content" ] && local content=`cat ${dir}content` if [ -z "$title" ]; then local title="$ip_name 连接了你的路由器" - local content="${markdown_splitline}#### 新设备连接${markdown_linefeed}${markdown_tab}客户端名:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_name}${markdown_linefeed}${markdown_tab}客户端IP: ${markdown_space}${markdown_space}${markdown_space}${markdown_space}${1}${markdown_linefeed}${markdown_tab}客户端MAC:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_mac}" + local content="${markdown_splitline}#### 新设备连接${markdown_linefeed}${markdown_tab}客户端名:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_name}${markdown_linefeed}${markdown_tab}客户端IP: ${markdown_space}${markdown_space}${markdown_space}${markdown_space}${1}${markdown_linefeed}${markdown_tab}客户端MAC:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_mac}${markdown_linefeed}${markdown_tab}网络接口:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_interface}" elif ( echo ${title}|grep -q "连接了你的路由器" ); then local title="${ip_name} ${title}" - local content="${markdown_splitline}${markdown_tab}客户端名:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_name}${markdown_linefeed}${markdown_tab}客户端IP: ${markdown_space}${markdown_space}${markdown_space}${markdown_space}${1}${markdown_linefeed}${markdown_tab}客户端MAC:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_mac}" + local content="${markdown_splitline}${markdown_tab}客户端名:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_name}${markdown_linefeed}${markdown_tab}客户端IP: ${markdown_space}${markdown_space}${markdown_space}${markdown_space}${1}${markdown_linefeed}${markdown_tab}客户端MAC:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_mac}${markdown_linefeed}${markdown_tab}网络接口:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_interface}" else local title="设备状态变化" - local content="${markdown_splitline}#### 新设备连接${markdown_linefeed}${markdown_tab}客户端名:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_name}${markdown_linefeed}${markdown_tab}客户端IP: ${markdown_space}${markdown_space}${markdown_space}${markdown_space}${1}${markdown_linefeed}${markdown_tab}客户端MAC:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_mac}" + local content="${markdown_splitline}#### 新设备连接${markdown_linefeed}${markdown_tab}客户端名:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_name}${markdown_linefeed}${markdown_tab}客户端IP: ${markdown_space}${markdown_space}${markdown_space}${markdown_space}${1}${markdown_linefeed}${markdown_tab}客户端MAC:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_mac}${markdown_linefeed}${markdown_tab}网络接口:${markdown_space}${markdown_space}${markdown_space}${markdown_space}${markdown_space}${ip_interface}" fi echo "`date "+%Y-%m-%d %H:%M:%S"` ${disturb_text}新设备 ${ip_name} ${1} 连接了">> ${logfile} [ ! -z "$serverchan_blacklist" ] && local title="你偷偷关注的设备上线了" @@ -741,7 +744,7 @@ function current_device(){ local ip_mac=`getmac ${ip}` local ip_total=`usage get ${ip_mac}` local ip_name=`getname ${ip} ${ip_mac}` - [ `length_str "$ip_name"` -gt "15" ] && local ip_name=`cut_str $ip_name 15`"*" + local ip_name=`cut_str $ip_name 15` if [ "${#ip}" -lt "15" ]; then local n=`expr 15 - ${#ip}` for i in `seq 1 $n`; do @@ -879,7 +882,7 @@ function send(){ local ip_mac=`getmac ${ip}` local ip_name=`getname ${ip} ${ip_mac}` local ip_total=`usage get ${ip_mac}`;[ ! -z "$ip_total" ] && local ip_total="总计流量:${ip_total} " - [ `length_str "$ip_name"` -gt "18" ] && local ip_name=`cut_str $ip_name 18`"*" + local ip_name=`cut_str $ip_name 18` local send_content="${send_content}${markdown_linefeed}${markdown_tab}【${ip_name}】 ${ip}${markdown_linefeed}${markdown_tab}${ip_total}在线 ${time1}" unset ip_total time_down time_up time1 ip_mac ip_name done @@ -973,3 +976,4 @@ while [ "$serverchan_enable" -eq "1" ]; do done sleep $sleeptime done + From d51acd440f922ea659c93cc3b9badc0878746f18 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 29 Oct 2020 22:38:27 +0800 Subject: [PATCH 6/8] OpenClash: bump to 0.40.14-beta --- package/ctcgfw/luci-app-openclash/Makefile | 2 +- .../root/etc/init.d/openclash | 15 ++ .../custom/openclash_custom_fake_filter.list | 14 +- .../openclash/dashboard/asset-manifest.json | 10 +- .../usr/share/openclash/dashboard/index.html | 2 +- .../openclash/dashboard/service-worker.js | 2 +- .../dashboard/static/js/2.4c19c7e9.chunk.js | 2 - .../dashboard/static/js/2.6366a4a0.chunk.js | 2 + ...SE.txt => 2.6366a4a0.chunk.js.LICENSE.txt} | 6 +- .../static/js/main.33688145.chunk.js | 1 - .../static/js/main.3ba71f82.chunk.js | 1 + .../usr/share/openclash/res/openclash_version | 4 +- .../root/usr/share/openclash/yml_change.sh | 166 +++++++++--------- 13 files changed, 124 insertions(+), 103 deletions(-) delete mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/2.4c19c7e9.chunk.js create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/2.6366a4a0.chunk.js rename package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/{2.4c19c7e9.chunk.js.LICENSE.txt => 2.6366a4a0.chunk.js.LICENSE.txt} (92%) delete mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/main.33688145.chunk.js create mode 100644 package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/main.3ba71f82.chunk.js diff --git a/package/ctcgfw/luci-app-openclash/Makefile b/package/ctcgfw/luci-app-openclash/Makefile index bd59a275a2..8ca94d65ee 100644 --- a/package/ctcgfw/luci-app-openclash/Makefile +++ b/package/ctcgfw/luci-app-openclash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-openclash -PKG_VERSION:=0.40.13 +PKG_VERSION:=0.40.14 PKG_RELEASE:=beta PKG_MAINTAINER:=vernesong diff --git a/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash b/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash index 656ac76b6e..74d5d55d88 100644 --- a/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash +++ b/package/ctcgfw/luci-app-openclash/root/etc/init.d/openclash @@ -1085,6 +1085,19 @@ do_run_file() } +#绑定interface防止回环 +check_interface_name() +{ + interface_name=$(ip route |grep "default" |awk '{print $5}' 2>/dev/null) + if [ -z "$(grep "^interface-name: $interface_name" "$CONFIG_FILE" 2>/dev/null)" ] && [ -n "$interface_name" ]; then + if [ ! -z "$(grep "^ \{0,\}interface-name:" "$CONFIG_FILE" 2>/dev/null)" ]; then + sed -i "/^ \{0,\}interface-name:/c\interface-name: ${interface_name}" "$CONFIG_FILE" 2>/dev/null + else + sed -i "/^redir-port:/a\interface-name: ${interface_name}" "$CONFIG_FILE" 2>/dev/null + fi + fi +} + start_run_core() { echo "$core_start_log" >$START_LOG @@ -1092,6 +1105,7 @@ start_run_core() ulimit -SHn 65535 2>/dev/null ulimit -v unlimited 2>/dev/null modprobe tun >/dev/null 2>&1 + check_interface_name config_reload=$(uci get openclash.config.config_reload 2>/dev/null) if [ -n "$(pidof clash)" ] && [ "$core_type" != "Tun" ] && [ "$config_reload" != "0" ]; then curl -s --connect-timeout 5 -m 5 -H 'Content-Type: application/json' -H "Authorization: Bearer ${da_password}" -XPUT http://"$lan_ip":"$cn_port"/configs -d "{\"path\": \"$CONFIG_FILE\"}" 2>/dev/null @@ -1193,6 +1207,7 @@ raw_config_start() cn_port=$(grep "^ \{0,\}external-controller:" "$CONFIG_FILE" |awk -F ':' '{print $3}' |awk -F '#' '{print $1}' |tr -cd "[0-9]" 2>/dev/null) uci set openclash.config.dashboard_password="$cn_port" 2>/dev/null + uci set openclash.config.proxy_port="$proxy_port" uci set openclash.config.restricted_mode=1 uci commit openclash diff --git a/package/ctcgfw/luci-app-openclash/root/etc/openclash/custom/openclash_custom_fake_filter.list b/package/ctcgfw/luci-app-openclash/root/etc/openclash/custom/openclash_custom_fake_filter.list index 88847f114e..f3e9491bbe 100644 --- a/package/ctcgfw/luci-app-openclash/root/etc/openclash/custom/openclash_custom_fake_filter.list +++ b/package/ctcgfw/luci-app-openclash/root/etc/openclash/custom/openclash_custom_fake_filter.list @@ -73,10 +73,16 @@ music.migu.cn #QQ快捷登录 localhost.ptlogin2.qq.com #Nintendo Switch -*.*.*.*.srv.nintendo.net ++.srv.nintendo.net #Sony PlayStation -*.*.*.stun.playstation.net ++.stun.playstation.net #Microsoft Xbox xbox.*.microsoft.com -*.*.*.xboxlive.com -proxy.golang.org \ No newline at end of file ++.xboxlive.com +proxy.golang.org +stun.*.* +stun.*.*.* +#Linksys Router +heartbeat.belkin.com +*.linksys.com +*.linksyssmartwifi.com diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json index a3dbb3cc0b..7e0d7fedbe 100644 --- a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json +++ b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/asset-manifest.json @@ -1,19 +1,19 @@ { "files": { "main.css": "./static/css/main.83e4b341.chunk.css", - "main.js": "./static/js/main.33688145.chunk.js", + "main.js": "./static/js/main.3ba71f82.chunk.js", "runtime-main.js": "./static/js/runtime-main.fefd5bb9.js", - "static/js/2.4c19c7e9.chunk.js": "./static/js/2.4c19c7e9.chunk.js", + "static/js/2.6366a4a0.chunk.js": "./static/js/2.6366a4a0.chunk.js", "index.html": "./index.html", "service-worker.js": "./service-worker.js", - "static/js/2.4c19c7e9.chunk.js.LICENSE.txt": "./static/js/2.4c19c7e9.chunk.js.LICENSE.txt", + "static/js/2.6366a4a0.chunk.js.LICENSE.txt": "./static/js/2.6366a4a0.chunk.js.LICENSE.txt", "static/media/logo.45983944.png": "./static/media/logo.45983944.png", "workbox-8a532145.js": "./workbox-8a532145.js" }, "entrypoints": [ "static/js/runtime-main.fefd5bb9.js", - "static/js/2.4c19c7e9.chunk.js", + "static/js/2.6366a4a0.chunk.js", "static/css/main.83e4b341.chunk.css", - "static/js/main.33688145.chunk.js" + "static/js/main.3ba71f82.chunk.js" ] } \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html index ad96416de7..175e6652e2 100644 --- a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html +++ b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/index.html @@ -1 +1 @@ -Clash
\ No newline at end of file +Clash
\ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/service-worker.js b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/service-worker.js index 966aca7453..f4868e6709 100644 --- a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/service-worker.js +++ b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/service-worker.js @@ -1 +1 @@ -if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let s=Promise.resolve();return r[e]||(s=new Promise(async s=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=s}else importScripts(e),s()})),s.then(()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]})},s=(s,r)=>{Promise.all(s.map(e)).then(e=>r(1===e.length?e[0]:e))},r={require:Promise.resolve(s)};self.define=(s,i,c)=>{r[s]||(r[s]=Promise.resolve().then(()=>{let r={};const t={uri:location.origin+s.slice(1)};return Promise.all(i.map(s=>{switch(s){case"exports":return r;case"module":return t;default:return e(s)}})).then(e=>{const s=c(...e);return r.default||(r.default=s),r})}))}}define("./service-worker.js",["./workbox-8a532145"],(function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"./index.html",revision:"b1a27ccef352baebb9667369555f9309"},{url:"./static/css/main.83e4b341.chunk.css",revision:"5a48466e5ff2a8ceec3348c3c498c260"},{url:"./static/js/2.4c19c7e9.chunk.js",revision:"d46b87667ddd715dd648d1ef8779c0b7"},{url:"./static/js/2.4c19c7e9.chunk.js.LICENSE.txt",revision:"176c1a1a28b19c611d9701905d8d60b7"},{url:"./static/js/main.33688145.chunk.js",revision:"62d6fab15c25a50205f635111e4e9e01"},{url:"./static/js/runtime-main.fefd5bb9.js",revision:"98f4f314ef9abb714a6c74c41e1e5a04"},{url:"./static/media/logo.45983944.png",revision:"198a55c9efe85ab0145d4402c07cfe65"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("./index.html"),{denylist:[/^\/_/,/\/[^/?]+\.[^/]+$/]}))})); +if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let s=Promise.resolve();return r[e]||(s=new Promise(async s=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=s}else importScripts(e),s()})),s.then(()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]})},s=(s,r)=>{Promise.all(s.map(e)).then(e=>r(1===e.length?e[0]:e))},r={require:Promise.resolve(s)};self.define=(s,i,t)=>{r[s]||(r[s]=Promise.resolve().then(()=>{let r={};const c={uri:location.origin+s.slice(1)};return Promise.all(i.map(s=>{switch(s){case"exports":return r;case"module":return c;default:return e(s)}})).then(e=>{const s=t(...e);return r.default||(r.default=s),r})}))}}define("./service-worker.js",["./workbox-8a532145"],(function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"./index.html",revision:"ff336a0edf18fc90c7f03fb0e43250a0"},{url:"./static/css/main.83e4b341.chunk.css",revision:"5a48466e5ff2a8ceec3348c3c498c260"},{url:"./static/js/2.6366a4a0.chunk.js",revision:"7a8970333d728cf369978e1fa658787e"},{url:"./static/js/2.6366a4a0.chunk.js.LICENSE.txt",revision:"6557abd439259b9580e2e2d5633cdacb"},{url:"./static/js/main.3ba71f82.chunk.js",revision:"2c4d6d7f7a1d7c843c445be62f92109f"},{url:"./static/js/runtime-main.fefd5bb9.js",revision:"98f4f314ef9abb714a6c74c41e1e5a04"},{url:"./static/media/logo.45983944.png",revision:"198a55c9efe85ab0145d4402c07cfe65"}],{}),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("./index.html"),{denylist:[/^\/_/,/\/[^/?]+\.[^/]+$/]}))})); diff --git a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/2.4c19c7e9.chunk.js b/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/2.4c19c7e9.chunk.js deleted file mode 100644 index 5153649350..0000000000 --- a/package/ctcgfw/luci-app-openclash/root/usr/share/openclash/dashboard/static/js/2.4c19c7e9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 2.4c19c7e9.chunk.js.LICENSE.txt */ -(this["webpackJsonpclash-dashboard"]=this["webpackJsonpclash-dashboard"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(70)},function(e,t,n){e.exports=n(74)},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(21);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){o=!0,i=l}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}}(e,t)||Object(r.a)(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a){try{var u=e[i](a),l=u.value}catch(s){return void n(s)}u.done?t(l):Promise.resolve(l).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function u(e){r(a,o,i,u,l,"next",e)}function l(e){r(a,o,i,u,l,"throw",e)}u(void 0)}))}}n.d(t,"a",(function(){return o}))},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i,a=!0,u=!1;return{s:function(){o=e[Symbol.iterator]()},n:function(){var e=o.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==o.return||o.return()}finally{if(u)throw i}}}}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=n(23);function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var u=n(3),l=n(16),s=n(1),c=n.n(s),f=n(2),d=n(6),p=n(5);function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function g(e,t,n){return(g=m()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&v(o,n.prototype),o}).apply(null,arguments)}function y(e){var t="function"===typeof Map?new Map:void 0;return(y=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return g(e,arguments,h(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),v(r,e)})(e)}function b(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}function w(e){return(w="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function S(e,t){return!t||"object"!==w(t)&&"function"!==typeof t?a(e):t}function x(e){return function(){var t,n=h(e);if(m()){var r=h(this).constructor;t=Reflect.construct(n,arguments,r)}else t=n.apply(this,arguments);return S(this,t)}}var _=n(10),E=n(0),T=n.n(E),k=n(13),R=n.n(k),O=c.a.mark(Fe),C=c.a.mark(Be);var P=function(e){};var A=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.error,null};function j(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var M=function e(t){Object(_.a)(this,e),j(this,"key",void 0),this.key=t},N=function(e){b(n,e);var t=x(n);function n(){return Object(_.a)(this,n),t.apply(this,arguments)}return n}(M),I=function(e){b(n,e);var t=x(n);function n(){return Object(_.a)(this,n),t.apply(this,arguments)}return n}(M);var z={AbstractRecoilValue:M,RecoilState:N,RecoilValueReadOnly:I,isRecoilValue:function(e){return e instanceof N||e instanceof I}},L=z.AbstractRecoilValue,F=z.RecoilState,D=z.RecoilValueReadOnly,B=z.isRecoilValue,V=Object.freeze({__proto__:null,AbstractRecoilValue:L,RecoilState:F,RecoilValueReadOnly:D,isRecoilValue:B}),U=function e(){Object(_.a)(this,e)},H=new U,W=function(e){b(n,e);var t=x(n);function n(e){return Object(_.a)(this,n),t.call(this,"Tried to set the value of Recoil selector ".concat(e," using an updater function, but it is an async selector in a pending or error state; this is not supported."))}return n}(y(Error)),$=new Map,G=new Map;var q=function(e){b(n,e);var t=x(n);function n(){return Object(_.a)(this,n),t.apply(this,arguments)}return n}(y(Error));var Y={nodes:$,recoilValues:G,registerNode:function(e){if($.has(e.key)){var t='Duplicate atom key "'.concat(e.key,'". This is a FATAL ERROR in\n production. But it is safe to ignore this warning if it occurred because of\n hot module replacement.');A(t)}$.set(e.key,e);var n=null==e.set?new V.RecoilValueReadOnly(e.key):new V.RecoilState(e.key);return G.set(e.key,n),n},getNode:function(e){var t=$.get(e);if(null==t)throw new q('Missing definition for RecoilValue: "'.concat(e,'""'));return t},getNodeMaybe:function(e){return $.get(e)},NodeMissingError:q,DefaultValue:U,DEFAULT_VALUE:H,RecoilValueNotReady:W};var K={enqueueExecution:function(e,t){t()}};var Q=function(e,t){var n=new Set(e);return n.add(t),n},X=function(e,t){var n=new Map(e);return n.delete(t),n},J=function(e,t){var n=new Map(e);return t.forEach((function(e){return n.delete(e)})),n},Z=X,ee=function(e,t,n){var r=new Map(e);return r.set(t,n),r},te=Q,ne=Y.getNode,re=Y.getNodeMaybe,oe=Object.freeze(new Set),ie=function(e){b(n,e);var t=x(n);function n(){return Object(_.a)(this,n),t.apply(this,arguments)}return n}(y(Error));var ae=function(e,t,n){return ne(n).get(e,t)},ue=function(e,t,n){return ne(n).peek(e,t)},le=function(e,t,n,r){var o=ne(n);if(null==o.set)throw new ie("Attempt to set read-only RecoilValue: ".concat(n));return o.set(e,t,r)},se=function(e,t,n){var r,o=re(t);return null===o||void 0===o||null===(r=o.invalidate)||void 0===r||r.call(o),Object(p.a)(Object(p.a)({},e),{},{atomValues:Z(e.atomValues,t),nonvalidatedAtoms:ee(e.nonvalidatedAtoms,t,n),dirtyAtoms:te(e.dirtyAtoms,t)})},ce=function(e,t,n){for(var r=new Set,o=Array.from(n),i=e.getGraph(t.version),a=o.pop();a;a=o.pop()){var u;r.add(a);var l,s=null!==(u=i.nodeToNodeSubscriptions.get(a))&&void 0!==u?u:oe,c=Object(d.a)(s);try{for(c.s();!(l=c.n()).done;){var f=l.value;r.has(f)||o.push(f)}}catch(p){c.e(p)}finally{c.f()}}return r};var fe=function(e){for(var t=new Set,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o2&&void 0!==arguments[2]?arguments[2]:e.getState().currentTree,a=e.getState();i.version!==a.currentTree.version&&i.version!==(null===(n=a.nextTree)||void 0===n?void 0:n.version)&&i.version!==(null===(r=a.previousTree)||void 0===r?void 0:r.version)&&A("Tried to read from a discarded tree");var u=Ee(e,i,o),l=Object(f.a)(u,2),s=l[0],c=l[1];return Re(s,e,i.version),c},setRecoilValue:Ie,setRecoilValueLoadable:function(e,t,n){if(n instanceof Oe)return Ie(e,t,n);var r=t.key;we.trace("set RecoilValue",r,(function(){return e.replaceState(we.wrap((function(e){var t=new Set([r]);return Object(p.a)(Object(p.a)({},e),{},{dirtyAtoms:Se(e.dirtyAtoms,t),atomValues:Ne(e.atomValues,new Map([[r,n]])),nonvalidatedAtoms:xe(e.nonvalidatedAtoms,r)})})))}))},markRecoilValueModified:function(e,t){var n=t.key;we.trace("mark RecoilValue modified",n,(function(){return e.replaceState(we.wrap((function(e){return Object(p.a)(Object(p.a)({},e),{},{dirtyAtoms:Se(e.dirtyAtoms,new Set([n]))})})))}))},setUnvalidatedRecoilValue:function(e,t,n){var r=t.key;we.trace("set unvalidated persisted atom",r,(function(){return e.replaceState(we.wrap((function(e){return ke(e,r,n)})))}))},subscribeToRecoilValue:function(e,t,n){var r=t.key,o=ze++,i=e.getState();return i.nodeToComponentSubscriptions.has(r)||i.nodeToComponentSubscriptions.set(r,new Map),pe(i.nodeToComponentSubscriptions.get(r)).set(o,["TODO debug name",n]),{release:function(){var t=e.getState(),n=t.nodeToComponentSubscriptions.get(r);void 0!==n&&n.has(o)?(n.delete(o),0===n.size&&t.nodeToComponentSubscriptions.delete(r)):A("Subscription missing at release time for atom ".concat(r,". This is a bug in Recoil."))}}},isRecoilValue:Me,applyAtomValueWrites:Ne};function Fe(e){var t,n,r,o,i,a;return c.a.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:t=Object(d.a)(e),u.prev=1,t.s();case 3:if((n=t.n()).done){u.next=24;break}r=n.value,o=Object(d.a)(r),u.prev=6,o.s();case 8:if((i=o.n()).done){u.next=14;break}return a=i.value,u.next=12,a;case 12:u.next=8;break;case 14:u.next=19;break;case 16:u.prev=16,u.t0=u.catch(6),o.e(u.t0);case 19:return u.prev=19,o.f(),u.finish(19);case 22:u.next=3;break;case 24:u.next=29;break;case 26:u.prev=26,u.t1=u.catch(1),t.e(u.t1);case 29:return u.prev=29,t.f(),u.finish(29);case 32:case"end":return u.stop()}}),O,null,[[1,26,29,32],[6,16,19,22]])}var De=Fe;function Be(e,t){var n,r,o,i;return c.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:n=0,r=Object(d.a)(e),a.prev=2,r.s();case 4:if((o=r.n()).done){a.next=11;break}if(i=o.value,!t(i,n++)){a.next=9;break}return a.next=9,i;case 9:a.next=4;break;case 11:a.next=16;break;case 13:a.prev=13,a.t0=a.catch(2),r.e(a.t0);case 16:return a.prev=16,r.f(),a.finish(16);case 19:case"end":return a.stop()}}),C,null,[[2,13,16,19]])}var Ve=Be,Ue=new Map;function He(e){var t;return null!==(t=Ue.get(e))&&void 0!==t&&t}He.setPass=function(e){Ue.set(e,!0)},He.setFail=function(e){Ue.set(e,!1)};var We=He;var $e=function(e,t){return c.a.mark((function n(){var r,o,i,a;return c.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=0,o=Object(d.a)(e),n.prev=2,o.s();case 4:if((i=o.n()).done){n.next=10;break}return a=i.value,n.next=8,t(a,r++);case 8:n.next=4;break;case 10:n.next=15;break;case 12:n.prev=12,n.t0=n.catch(2),o.e(n.t0);case 15:return n.prev=15,o.f(),n.finish(15);case 18:case"end":return n.stop()}}),n,null,[[2,12,15,18]])}))()},Ge=ge,qe=0,Ye=function(){return qe++};function Ke(){var e=Ye();return{version:e,stateID:e,transactionMetadata:{},dirtyAtoms:new Set,atomValues:new Map,nonvalidatedAtoms:new Map}}var Qe=function(){var e=Ke();return{currentTree:e,nextTree:null,previousTree:null,knownAtoms:new Set,knownSelectors:new Set,transactionSubscriptions:new Map,nodeTransactionSubscriptions:new Map,nodeToComponentSubscriptions:new Map,queuedComponentCallbacks_DEPRECATED:[],suspendedComponentResolvers:new Set,graphsByVersion:(new Map).set(e.version,Ge()),versionsUsedByComponent:new Map}},Xe=Ye,Je=ce,Ze=ue,et=ge,tt=Y.DEFAULT_VALUE,nt=Y.recoilValues,rt=Le.getRecoilValueAsLoadable,ot=Le.setRecoilValue,it=Xe,at=Qe;function ut(e){return $e(e,(function(e){return pe(nt.get(e))}))}var lt=function(){function e(t){var n=this;Object(_.a)(this,e),j(this,"_store",void 0),j(this,"getLoadable",(function(e){return rt(n._store,e)})),j(this,"getPromise",(function(e){return We("recoil_async_selector_refactor")?n.getLoadable(e).toPromise().then((function(e){return e.value})):n.getLoadable(e).toPromise()})),j(this,"getNodes_UNSTABLE",(function(e){if(!0===(null===e||void 0===e?void 0:e.isModified))return!1===(null===e||void 0===e?void 0:e.isInitialized)?[]:ut(n._store.getState().currentTree.dirtyAtoms);var t=n._store.getState().knownAtoms,r=n._store.getState().knownSelectors;return null==(null===e||void 0===e?void 0:e.isInitialized)?nt.values():!0===e.isInitialized?ut(De([n._store.getState().knownAtoms,n._store.getState().knownSelectors])):Ve(nt.values(),(function(e){var n=e.key;return!t.has(n)&&!r.has(n)}))})),j(this,"getDeps_UNSTABLE",(function(e){n.getLoadable(e);var t=n._store.getGraph(n._store.getState().currentTree.version).nodeDeps.get(e.key);return ut(null!==t&&void 0!==t?t:[])})),j(this,"getSubscribers_UNSTABLE",(function(e){var t=e.key,r=n._store.getState().currentTree;return{nodes:ut(Ve(Je(n._store,r,new Set([t])),(function(e){return e!==t})))}})),j(this,"getInfo_UNSTABLE",(function(e){var t,r=e.key,o=n._store.getState().currentTree,i=n._store.getGraph(o.version);return{loadable:Ze(n._store,o,r),isActive:n._store.getState().knownAtoms.has(r)||n._store.getState().knownSelectors.has(r),isSet:o.atomValues.has(r),isModified:o.dirtyAtoms.has(r),type:n._store.getState().knownAtoms.has(r)?"atom":n._store.getState().knownSelectors.has(r)?"selector":void 0,deps:ut(null!==(t=i.nodeDeps.get(r))&&void 0!==t?t:[]),subscribers:n.getSubscribers_UNSTABLE(e)}})),j(this,"map",(function(e){var t=new ft(n);return e(t),ct(t.getStore_INTERNAL())})),j(this,"asyncMap",function(){var e=Object(u.a)(c.a.mark((function e(t){var r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=new ft(n),e.next=3,t(r);case 3:return e.abrupt("return",ct(r.getStore_INTERNAL()));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),this._store={getState:function(){return t},replaceState:function(e){t.currentTree=e(t.currentTree)},getGraph:function(e){var n=t.graphsByVersion;if(n.has(e))return pe(n.get(e));var r=et();return n.set(e,r),r},subscribeToTransactions:function(){return{release:function(){}}},addTransactionMetadata:function(){throw new Error("Cannot subscribe to Snapshots")}}}return Object(l.a)(e,[{key:"getStore_INTERNAL",value:function(){return this._store}},{key:"getID",value:function(){return this.getID_INTERNAL()}},{key:"getID_INTERNAL",value:function(){return this._store.getState().currentTree.stateID}}]),e}();function st(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=e.getState(),o=n?it():t.version;return{currentTree:n?{version:o,stateID:o,transactionMetadata:Object(p.a)({},t.transactionMetadata),dirtyAtoms:new Set(t.dirtyAtoms),atomValues:new Map(t.atomValues),nonvalidatedAtoms:new Map(t.nonvalidatedAtoms)}:t,nextTree:null,previousTree:null,knownAtoms:new Set(r.knownAtoms),knownSelectors:new Set(r.knownSelectors),transactionSubscriptions:new Map,nodeTransactionSubscriptions:new Map,nodeToComponentSubscriptions:new Map,queuedComponentCallbacks_DEPRECATED:[],suspendedComponentResolvers:new Set,graphsByVersion:(new Map).set(o,e.getGraph(t.version)),versionsUsedByComponent:new Map}}function ct(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"current",n=e.getState(),r="current"===t?n.currentTree:pe(n.previousTree);return new lt(st(e,r))}var ft=function(e){b(n,e);var t=x(n);function n(e){var r;return Object(_.a)(this,n),j(a(r=t.call(this,st(e.getStore_INTERNAL(),e.getStore_INTERNAL().getState().currentTree,!0))),"set",(function(e,t){var n=r.getStore_INTERNAL();ot(n,e,t)})),j(a(r),"reset",(function(e){return ot(r.getStore_INTERNAL(),e,tt)})),r}return n}(lt),dt={Snapshot:lt,MutableSnapshot:ft,freshSnapshot:function(){return new lt(at())},cloneSnapshot:ct},pt=dt.Snapshot,ht=dt.MutableSnapshot,vt=dt.freshSnapshot,mt=dt.cloneSnapshot,gt=Object.freeze({__proto__:null,Snapshot:pt,MutableSnapshot:ht,freshSnapshot:vt,cloneSnapshot:mt}),yt=T.a.useContext,bt=T.a.useEffect,wt=T.a.useMemo,St=T.a.useRef,xt=T.a.useState,_t=ce,Et=le,Tt=se,kt=ge,Rt=be,Ot=me,Ct=Le.applyAtomValueWrites,Pt=gt.freshSnapshot,At=Xe,jt=Qe,Mt=J;function Nt(){throw new Error("This component must be used inside a component.")}var It=Object.freeze({getState:Nt,replaceState:Nt,getGraph:Nt,subscribeToTransactions:Nt,addTransactionMetadata:Nt}),zt=!1;function Lt(e){if(zt)throw new Error("An atom update was triggered within the execution of a state updater function. State updater functions provided to Recoil must be pure functions.");if(null===e.nextTree){var t=e.currentTree.version,n=At();e.nextTree=Object(p.a)(Object(p.a)({},e.currentTree),{},{version:n,stateID:n,dirtyAtoms:new Set,transactionMetadata:{}}),e.graphsByVersion.set(n,Ot(pe(e.graphsByVersion.get(t))))}}var Ft=T.a.createContext({current:It}),Dt=function(){return yt(Ft)},Bt=T.a.createContext(null);function Vt(e){var t=e.getState(),n=t.currentTree,r=n.dirtyAtoms;if(r.size){var o,i=Object(d.a)(t.nodeTransactionSubscriptions);try{for(i.s();!(o=i.n()).done;){var a=Object(f.a)(o.value,2),u=a[0],l=a[1];if(r.has(u)){var s,c=Object(d.a)(l);try{for(c.s();!(s=c.n()).done;){var p=Object(f.a)(s.value,2);p[0];(0,p[1])(e)}}catch(k){c.e(k)}finally{c.f()}}}}catch(k){i.e(k)}finally{i.f()}var h,v=Object(d.a)(t.transactionSubscriptions);try{for(v.s();!(h=v.n()).done;){var m=Object(f.a)(h.value,2);m[0];(0,m[1])(e)}}catch(k){v.e(k)}finally{v.f()}var g,y=_t(e,n,r),b=Object(d.a)(y);try{for(b.s();!(g=b.n()).done;){var w=g.value,S=t.nodeToComponentSubscriptions.get(w);if(S){var x,_=Object(d.a)(S);try{for(_.s();!(x=_.n()).done;){var E=Object(f.a)(x.value,2),T=(E[0],Object(f.a)(E[1],2));T[0];(0,T[1])(n)}}catch(k){_.e(k)}finally{_.f()}}}}catch(k){b.e(k)}finally{b.f()}0,t.suspendedComponentResolvers.forEach((function(e){return we.trace("value became available, waking components","[available in dev build]",e)}))}t.queuedComponentCallbacks_DEPRECATED.forEach((function(e){return e(n)})),t.queuedComponentCallbacks_DEPRECATED.splice(0,t.queuedComponentCallbacks_DEPRECATED.length)}function Ut(e){var t=Dt(),n=xt([]),r=Object(f.a)(n,2),o=(r[0],r[1]);return e.setNotifyBatcherOfChange((function(){return o({})})),bt((function(){K.enqueueExecution("Batcher",(function(){var e=t.current.getState(),n=e.nextTree;if(null!==n){e.previousTree=e.currentTree,e.currentTree=n,e.nextTree=null,Vt(t.current);var r=pe(e.previousTree).version;e.graphsByVersion.delete(r),e.previousTree=null}}))})),null}var Ht=0;var Wt=Dt,$t=function(){return yt(Bt)},Gt=function(e){var t,n,r=e.initializeState_DEPRECATED,o=e.initializeState,i=e.store_INTERNAL,a=e.children,u=St(null),l=null!==(t=T.a.createMutableSource)&&void 0!==t?t:T.a.unstable_createMutableSource,s=null!==i&&void 0!==i?i:{getState:function(){return n.current},replaceState:function(e){var t=c.current.getState();Lt(t);var n,r=pe(t.nextTree);try{zt=!0,n=e(r)}finally{zt=!1}n!==r&&(t.nextTree=n,pe(u.current)())},getGraph:function(e){var t=n.current.graphsByVersion;if(t.has(e))return pe(t.get(e));var r=kt();return t.set(e,r),r},subscribeToTransactions:function(e,t){if(null==t){var n=c.current.getState().transactionSubscriptions,r=Ht++;return n.set(r,e),{release:function(){n.delete(r)}}}var o=c.current.getState().nodeTransactionSubscriptions;o.has(t)||o.set(t,new Map);var i=Ht++;return pe(o.get(t)).set(i,e),{release:function(){var e=o.get(t);e&&(e.delete(i),0===e.size&&o.delete(t))}}},addTransactionMetadata:function(e){Lt(c.current.getState());for(var t=0,n=Object.keys(e);t1&&void 0!==arguments[1]?arguments[1]:{};R.a.unstable_batchedUpdates((function(){e.current.addTransactionMetadata(n),t.forEach((function(t,n){return fn(e.current,new un(n),t)}))}))}},In=function(e){bn(Jt((function(t){var n=t.getState().previousTree,r=t.getState().currentTree;n||(A("Transaction subscribers notified without a previous tree being present -- this is a bug in Recoil"),n=t.getState().currentTree);var o=wn(r),i=wn(n),a=de(rn,(function(e){var t,n,r,o;return{persistence_UNSTABLE:{type:null!==(t=null===(n=e.persistence_UNSTABLE)||void 0===n?void 0:n.type)&&void 0!==t?t:"none",backButton:null!==(r=null===(o=e.persistence_UNSTABLE)||void 0===o?void 0:o.backButton)&&void 0!==r&&r}}})),u=Yt(r.dirtyAtoms,(function(e){return o.has(e)||i.has(e)}));e({atomValues:o,previousAtomValues:i,atomInfo:a,modifiedAtoms:u,transactionMetadata:Object(p.a)({},r.transactionMetadata)})}),[e]))},zn=T.a.useMemo,Ln=Gt,Fn=Wt;var Dn=function(){var e=Fn().current;return zn((function(){return function(t){var n=t.children;return T.a.createElement(Ln,{store_INTERNAL:e},n)}}),[e])};var Bn=function(e){return!!e&&"function"===typeof e.then},Vn={getValue:function(){if("hasValue"!==this.state)throw this.contents;return this.contents},toPromise:function(){return"hasValue"===this.state?Promise.resolve(this.contents):"hasError"===this.state?Promise.reject(this.contents):this.contents},valueMaybe:function(){return"hasValue"===this.state?this.contents:void 0},valueOrThrow:function(){if("hasValue"!==this.state)throw new Error('Loadable expected value, but in "'.concat(this.state,'" state'));return this.contents},errorMaybe:function(){return"hasError"===this.state?this.contents:void 0},errorOrThrow:function(){if("hasError"!==this.state)throw new Error('Loadable expected error, but in "'.concat(this.state,'" state'));return this.contents},promiseMaybe:function(){return"loading"===this.state?this.contents:void 0},promiseOrThrow:function(){if("loading"!==this.state)throw new Error('Loadable expected promise, but in "'.concat(this.state,'" state'));return this.contents},map:function(e){var t=this;if("hasError"===this.state)return this;if("hasValue"===this.state)try{var n=e(this.contents);return Bn(n)?Wn(n):Un(n)}catch(r){return Bn(r)?Wn(r.next((function(){return e(t.contents)}))):Hn(r)}if("loading"===this.state)return Wn(this.contents.then(e).catch((function(n){if(Bn(n))return n.then((function(){return e(t.contents)}));throw n})));throw new Error("Invalid Loadable state")}};function Un(e){return Object.freeze(Object(p.a)({state:"hasValue",contents:e},Vn))}function Hn(e){return Object.freeze(Object(p.a)({state:"hasError",contents:e},Vn))}function Wn(e){return Object.freeze(Object(p.a)({state:"loading",contents:e},Vn))}var $n=Un,Gn=Hn,qn=Wn;var Yn=Symbol("ArrayKeyedMap"),Kn=new Map,Qn=function(){function e(t){if(Object(_.a)(this,e),this._base=new Map,t instanceof e){var n,r=Object(d.a)(t.entries());try{for(r.s();!(n=r.n()).done;){var o=Object(f.a)(n.value,2),i=o[0],a=o[1];this.set(i,a)}}catch(h){r.e(h)}finally{r.f()}}else if(t){var u,l=Object(d.a)(t);try{for(l.s();!(u=l.n()).done;){var s=Object(f.a)(u.value,2),c=s[0],p=s[1];this.set(c,p)}}catch(h){l.e(h)}finally{l.f()}}return this}return Object(l.a)(e,[{key:"get",value:function(e){var t=Array.isArray(e)?e:[e],n=this._base;return t.forEach((function(e){var t;n=null!==(t=n.get(e))&&void 0!==t?t:Kn})),void 0===n?void 0:n.get(Yn)}},{key:"set",value:function(e,t){var n=Array.isArray(e)?e:[e],r=this._base,o=r;return n.forEach((function(e){(o=r.get(e))||(o=new Map,r.set(e,o)),r=o})),o.set(Yn,t),this}},{key:"delete",value:function(e){var t=Array.isArray(e)?e:[e],n=this._base,r=n;return t.forEach((function(e){(r=n.get(e))||(r=new Map,n.set(e,r)),n=r})),r.delete(Yn),this}},{key:"entries",value:function(){var e=[];return function t(n,r){n.forEach((function(n,o){o===Yn?e.push([r,n]):t(n,r.concat(o))}))}(this._base,[]),e.values()}},{key:"toBuiltInMap",value:function(){return new Map(this.entries())}}]),e}();var Xn=function(){return new Qn};var Jn=function(e){return function(){return null}},Zn=Gn,er=qn,tr=$n,nr=ae,rr=ue,or=le,ir=ve,ar=ye,ur=be,lr=Y.DEFAULT_VALUE,sr=Y.RecoilValueNotReady,cr=Y.registerNode,fr=V.AbstractRecoilValue,dr=Le.getRecoilValueAsLoadable,pr=Le.isRecoilValue,hr=Le.setRecoilValueLoadable,vr=Jn,mr=Object.freeze(new Set);function gr(e){var t,n=[],r=Object(d.a)(Array.from(e.keys()).sort());try{for(r.s();!(t=r.n()).done;){var o=t.value,i=pe(e.get(o));n.push(o),n.push(i.state),n.push(i.contents)}}catch(a){r.e(a)}finally{r.f()}return n}var yr=new Map;var br=function(e){var t=e.key,n=e.get,r=e.cacheImplementation_UNSTABLE,o=null!=e.set?e.set:void 0,i=null!==r&&void 0!==r?r:Xn();function a(e){e.getState().knownSelectors.add(t)}function u(e,t){if("loading"===t.state){var n=yr.get(t);void 0===n&&yr.set(t,n=new Set),n.add(e)}}function l(e,n){var r=yr.get(e);if(void 0!==r){var o,i=Object(d.a)(r);try{for(i.s();!(o=i.n()).done;){var a=o.value;hr(a,new fr(t),n)}}catch(u){i.e(u)}finally{i.f()}yr.delete(e)}}function s(e,r){var o,a=new Map,s=null!==(o=e.getGraph(r.version).nodeDeps.get(t))&&void 0!==o?o:mr,c=gr(new Map(Array.from(s).sort().map((function(t){var n=nr(e,r,t),o=Object(f.a)(n,2),i=o[0],u=o[1];return ar(i,a),ur(a,e,r.version),[t,u]})))),d=i.get(c);if(null!=d)return u(e,d),[a,d];var p=function(e,r){var o=vr(t),i=new Map,a=new Map;function u(n){var o=n.key;ir(t,o,a);var u=nr(e,r,o),l=Object(f.a)(u,2),s=l[0],c=l[1];if(i.set(o,c),ar(s,a),ur(a,e,r.version),"hasValue"===c.state)return c.contents;throw c.contents}try{var l,s=n({get:u}),c=pr(s)?u(s):s;return Bn(c)?l=er(c.finally(o)):(o(),l=tr(c)),[a,l,i]}catch(p){var d;return void 0!==p.then?d=er(p.then((function(){var n=dr(e,new fr(t));if("hasError"===n.state)throw n.contents;return n.contents})).finally(o)):(o(),d=Zn(p)),[a,d,i]}}(e,r),h=Object(f.a)(p,3),v=h[0],m=h[1],g=h[2];ar(v,a),ur(a,e,r.version);var y=gr(g);return u(e,m),function(e,t){"loading"!==t.state||t.contents.then((function(n){var r=tr(n);return i=i.set(e,r),l(t,r),n})).catch((function(n){if(Bn(n))return n;var r=Zn(n);return i=i.set(e,r),l(t,r),n})),i=i.set(e,t)}(y,m),[a,m]}function c(e,n){var r,o,a=null!==(r=e.getGraph(n.version).nodeDeps.get(t))&&void 0!==r?r:mr,u=new Map(Array.from(a).sort().map((function(t){return[t,rr(e,n,t)]}))),l=new Map,s=Object(d.a)(u.entries());try{for(s.s();!(o=s.n()).done;){var c=Object(f.a)(o.value,2),p=c[0],h=c[1];if(null==h)return;l.set(p,h)}}catch(m){s.e(m)}finally{s.f()}var v=gr(l);return i.get(v)}function p(e,t){return a(e),s(e,t)}if(null!=o){return cr({key:t,peek:c,get:p,set:function(e,t,n){a(e);var r=new Map,i=new Map;function u(n){var o=n.key,i=nr(e,t,o),a=Object(f.a)(i,2),u=a[0],l=a[1];if(ar(u,r),"hasValue"===l.state)return l.contents;throw"loading"===l.state?new sr(o):l.contents}function l(n,o){var a="function"===typeof o?o(u(n)):o,l=or(e,t,n.key,a),s=Object(f.a)(l,2),c=s[0],d=s[1];ar(c,r),d.forEach((function(e,t){return i.set(t,e)}))}return o({set:l,get:u,reset:function(e){l(e,lr)}},n),[r,i]},dangerouslyAllowMutability:e.dangerouslyAllowMutability,shouldRestoreFromSnapshots:!1})}return cr({key:t,peek:c,get:p,dangerouslyAllowMutability:e.dangerouslyAllowMutability,shouldRestoreFromSnapshots:!1})},wr=Gn,Sr=qn,xr=$n,_r=Y.DEFAULT_VALUE,Er=Y.DefaultValue,Tr=Y.registerNode,kr=V.isRecoilValue,Rr=Le.markRecoilValueModified,Or=Le.setRecoilValue,Cr=Le.setRecoilValueLoadable;function Pr(e){var t=e.key,n=e.persistence_UNSTABLE,r=Bn(e.default)?Sr(e.default.then((function(e){return r=xr(e),e})).catch((function(e){throw r=wr(e),e}))):xr(e.default),o=void 0;function i(n,o,i){if(!n.getState().knownAtoms.has(t)){if(n.getState().knownAtoms.add(t),"loading"===r.state){var u=function(){var e;(null!==(e=n.getState().nextTree)&&void 0!==e?e:n.getState().currentTree).atomValues.has(t)||Rr(n,a)};r.contents.then(u).catch(u)}var l=_r;if(null!=e.effects_UNSTABLE){var s,c=function(e){if(p){var t=l instanceof Er||Bn(l)?"hasValue"===r.state?r.contents:_r:l;l="function"===typeof e?e(t):e}else{if(Bn(e))throw new Error("Setting atoms to async values is not implemented.");Or(n,a,e)}},f=function(e){n.subscribeToTransactions((function(n){var o=n.getState(),i=o.currentTree,a=o.previousTree;a||(A("Transaction subscribers notified without a next tree being present -- this is a bug in Recoil"),a=i);var u=i.atomValues.get(t);if(null==u||"hasValue"===u.state){var l,s=null!=u?u.contents:_r,c=null!==(l=a.atomValues.get(t))&&void 0!==l?l:r,f="hasValue"===c.state?c.contents:_r;e(s,f)}}),t)},p=!0,h=function(){return c(_r)},v=Object(d.a)(null!==(m=e.effects_UNSTABLE)&&void 0!==m?m:[]);try{for(v.s();!(s=v.n()).done;){var m;(0,s.value)({node:a,trigger:i,setSelf:c,resetSelf:h,onSet:f})}}catch(g){v.e(g)}finally{v.f()}p=!1}l instanceof Er||o.atomValues.set(t,Bn(l)?Sr(function(e,n){var r=n.then((function(n){var o,i;return(null===(i=(null!==(o=e.getState().nextTree)&&void 0!==o?o:e.getState().currentTree).atomValues.get(t))||void 0===i?void 0:i.contents)===r&&Or(e,a,n),n})).catch((function(n){var o,i;throw(null===(i=(null!==(o=e.getState().nextTree)&&void 0!==o?o:e.getState().currentTree).atomValues.get(t))||void 0===i?void 0:i.contents)===r&&Cr(e,a,wr(n)),n}));return r}(n,l)):xr(l))}}var a=Tr({key:t,peek:function(e,n){var i,a,u;return null!==(i=null!==(a=n.atomValues.get(t))&&void 0!==a?a:null===(u=o)||void 0===u?void 0:u[1])&&void 0!==i?i:r},get:function(e,a){if(i(e,a,"get"),a.atomValues.has(t))return[new Map,pe(a.atomValues.get(t))];if(a.nonvalidatedAtoms.has(t)){if(null!=o)return o;if(null==n)return P("Tried to restore a persisted value for atom ".concat(t," but it has no persistence settings.")),[new Map,r];var u=a.nonvalidatedAtoms.get(t),l=n.validator(u,_r),s=l instanceof Er?r:xr(l);return o=[new Map,s]}return[new Map,r]},set:function(e,n,r){if(i(e,n,"set"),n.atomValues.has(t)){var a=pe(n.atomValues.get(t));if("hasValue"===a.state&&r===a.contents)return[new Map,new Map]}else if(!n.nonvalidatedAtoms.has(t)&&r instanceof Er)return[new Map,new Map];return o=void 0,[new Map,(new Map).set(t,xr(r))]},invalidate:function(){o=void 0},dangerouslyAllowMutability:e.dangerouslyAllowMutability,persistence_UNSTABLE:e.persistence_UNSTABLE?{type:e.persistence_UNSTABLE.type,backButton:e.persistence_UNSTABLE.backButton}:void 0,shouldRestoreFromSnapshots:!0});return a}function Ar(e){var t=e.default,n=o(e,["default"]);return kr(t)?function(e){var t=Ar(Object(p.a)(Object(p.a)({},e),{},{default:_r,persistence_UNSTABLE:void 0===e.persistence_UNSTABLE?void 0:Object(p.a)(Object(p.a)({},e.persistence_UNSTABLE),{},{validator:function(t){return t instanceof Er?t:pe(e.persistence_UNSTABLE).validator(t,_r)}}),effects_UNSTABLE:e.effects_UNSTABLE}));return br({key:"".concat(e.key,"__withFallback"),get:function(n){var r=(0,n.get)(t);return r instanceof Er?e.default:r},set:function(e,n){return(0,e.set)(t,n)},dangerouslyAllowMutability:e.dangerouslyAllowMutability})}(Object(p.a)(Object(p.a)({},n),{},{default:t})):Pr(Object(p.a)(Object(p.a)({},n),{},{default:t}))}var jr=Ar;function Mr(e,t,n){if("string"===typeof e&&!e.includes('"')&&!e.includes("\\"))return'"'.concat(e,'"');switch(typeof e){case"undefined":return"";case"boolean":return e?"true":"false";case"number":case"symbol":return String(e);case"string":return JSON.stringify(e);case"function":if(!0!==(null===t||void 0===t?void 0:t.allowFunctions))throw new Error("Attempt to serialize function in a Recoil cache key");return"__FUNCTION(".concat(e.name,")__")}if(null===e)return"null";var r;if("object"!==typeof e)return null!==(r=JSON.stringify(e))&&void 0!==r?r:"";if(Bn(e))return"__PROMISE__";if(Array.isArray(e))return"[".concat(e.map((function(e,n){return Mr(e,t,n.toString())})),"]");if("function"===typeof e.toJSON)return Mr(e.toJSON(n),t,n);if(e instanceof Map){var o,i={},a=Object(d.a)(e);try{for(a.s();!(o=a.n()).done;){var u=Object(f.a)(o.value,2),l=u[0],s=u[1];i["string"===typeof l?l:Mr(l,t)]=s}}catch(c){a.e(c)}finally{a.f()}return Mr(i,t,n)}return e instanceof Set?Mr(Array.from(e).sort((function(e,n){return Mr(e,t).localeCompare(Mr(n,t))})),t,n):null!=e[Symbol.iterator]&&"function"===typeof e[Symbol.iterator]?Mr(Array.from(e),t,n):"{".concat(Object.keys(e).filter((function(t){return void 0!==e[t]})).sort().map((function(n){return"".concat(Mr(n,t),":").concat(Mr(e[n],t,n))})).join(","),"}")}var Nr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{allowFunctions:!1};return Mr(e,t)};var Ir=function(){var e=new Map,t={get:function(t){return e.get(Nr(t))},set:function(n,r){return e.set(Nr(n),r),t},map:e};return t},zr=0;var Lr=function(e){var t,n,r=null!==(t=null===(n=e.cacheImplementationForParams_UNSTABLE)||void 0===n?void 0:n.call(e))&&void 0!==t?t:Ir();return function(t){var n,o,i=r.get(t);if(null!=i)return i;var a,u="".concat(e.key,"__selectorFamily/").concat(null!==(n=Nr(t,{allowFunctions:!0}))&&void 0!==n?n:"void","/").concat(zr++),l=function(n){return e.get(t)(n)},s=null===(o=e.cacheImplementation_UNSTABLE)||void 0===o?void 0:o.call(e);if(null!=e.set){var c=e.set;a=br({key:u,get:l,set:function(e,n){return c(t)(e,n)},cacheImplementation_UNSTABLE:s,dangerouslyAllowMutability:e.dangerouslyAllowMutability})}else a=br({key:u,get:l,cacheImplementation_UNSTABLE:s,dangerouslyAllowMutability:e.dangerouslyAllowMutability});return r=r.set(t,a),a}},Fr=Y.DEFAULT_VALUE,Dr=Y.DefaultValue;var Br=function(e){var t,n=Ir(),r={key:e.key,default:Fr,persistence_UNSTABLE:e.persistence_UNSTABLE};t=jr(r);var o=Lr({key:"".concat(e.key,"__atomFamily/Default"),get:function(n){return function(r){var o=(0,r.get)("function"===typeof t?t(n):t);return o instanceof Dr?"function"===typeof e.default?e.default(n):e.default:o}},dangerouslyAllowMutability:e.dangerouslyAllowMutability});return function(t){var r,i=n.get(t);if(null!=i)return i;var a=jr(Object(p.a)(Object(p.a)({},e),{},{key:"".concat(e.key,"__").concat(null!==(r=Nr(t))&&void 0!==r?r:"void"),default:o(t),effects_UNSTABLE:"function"===typeof e.effects_UNSTABLE?e.effects_UNSTABLE(t):e.effects_UNSTABLE}));return n=n.set(t,a),a}},Vr=Lr({key:"__constant",get:function(e){return function(){return e}},cacheImplementationForParams_UNSTABLE:Xn});var Ur=function(e){return Vr(e)},Hr=Lr({key:"__error",get:function(e){return function(){throw new Error(e)}},cacheImplementationForParams_UNSTABLE:Xn});var Wr=function(e){return Hr(e)};var $r=function(e){return e},Gr=Gn,qr=qn,Yr=$n;function Kr(e,t){var n,r=Array(t.length).fill(void 0),o=Array(t.length).fill(void 0),i=Object(d.a)(t.entries());try{for(i.s();!(n=i.n()).done;){var a=Object(f.a)(n.value,2),u=a[0],l=a[1];try{r[u]=e(l)}catch(s){o[u]=s}}}catch(c){i.e(c)}finally{i.f()}return[r,o]}function Qr(e){return null!=e&&!Bn(e)}function Xr(e){return Array.isArray(e)?e:Object.getOwnPropertyNames(e).map((function(t){return e[t]}))}function Jr(e){return e.hasOwnProperty("value")?e.value:e}function Zr(e,t){return Array.isArray(e)?t:Object.getOwnPropertyNames(e).reduce((function(e,n,o){return Object(p.a)(Object(p.a)({},e),{},Object(r.a)({},n,t[o]))}),{})}function eo(e,t,n){return Zr(e,n.map((function(e,n){return null==e?Yr(t[n]):Bn(e)?qr(e):Gr(e)})))}var to={waitForNone:Lr({key:"__waitForNone",get:function(e){return function(t){var n=Kr(t.get,Xr(e)),r=Object(f.a)(n,2),o=r[0],i=r[1];return eo(e,o,i)}}}),waitForAny:Lr({key:"__waitForAny",get:function(e){return function(t){var n=Kr(t.get,Xr(e)),r=Object(f.a)(n,2),o=r[0],i=r[1];if(i.some((function(e){return null==e})))return eo(e,o,i);if(i.every(Qr))throw i.find(Qr);if(We("recoil_async_selector_refactor"))return new Promise((function(t,n){var r,a=Object(d.a)(i.entries());try{var u=function(){var a=Object(f.a)(r.value,2),u=a[0],l=a[1];Bn(l)&&l.then((function(n){o[u]=Jr(n),i[u]=null,t(eo(e,o,i))})).catch((function(e){i[u]=e,i.every(Qr)&&n(i[0])}))};for(a.s();!(r=a.n()).done;)u()}catch(l){a.e(l)}finally{a.f()}}));throw new Promise((function(t,n){var r,a=Object(d.a)(i.entries());try{var u=function(){var a=Object(f.a)(r.value,2),u=a[0],l=a[1];Bn(l)&&l.then((function(n){o[u]=n,i[u]=null,t(eo(e,o,i))})).catch((function(e){i[u]=e,i.every(Qr)&&n(i[0])}))};for(a.s();!(r=a.n()).done;)u()}catch(l){a.e(l)}finally{a.f()}}))}}}),waitForAll:Lr({key:"__waitForAll",get:function(e){return function(t){var n=Kr(t.get,Xr(e)),r=Object(f.a)(n,2),o=r[0],i=r[1];if(i.every((function(e){return null==e})))return Zr(e,o);var a=i.find(Qr);if(null!=a)throw a;if(We("recoil_async_selector_refactor"))return Promise.all(i).then((function(t){return Zr(e,t.map(Jr))}));throw Promise.all(i).then((function(t){return Zr(e,t)}))}}}),noWait:Lr({key:"__noWait",get:function(e){return function(t){var n=t.get;try{return Yr(n(e))}catch(r){return Bn(r)?qr(r):Gr(r)}}}})},no=Y.DefaultValue,ro=Gt,oo=V.isRecoilValue,io={DefaultValue:no,RecoilRoot:ro,useRecoilBridgeAcrossReactRoots_UNSTABLE:Dn,atom:jr,selector:br,atomFamily:Br,selectorFamily:Lr,constSelector:Ur,errorSelector:Wr,readOnlySelector:$r,useRecoilValue:Pn,useRecoilValueLoadable:An,useRecoilState:Rn,useRecoilStateLoadable:On,useSetRecoilState:Mn,useResetRecoilState:jn,useRecoilCallback:Tn,useGotoRecoilSnapshot:En,useRecoilSnapshot:kn,useRecoilTransactionObserver_UNSTABLE:Cn,useTransactionObservation_UNSTABLE:In,useSetUnvalidatedAtomValues_UNSTABLE:Nn,noWait:to.noWait,waitForNone:to.waitForNone,waitForAny:to.waitForAny,waitForAll:to.waitForAll,isRecoilValue:oo},ao=io.RecoilRoot,uo=io.atom,lo=io.selector,so=io.useRecoilValue,co=io.useRecoilState},function(e,t,n){"use strict";n.d(t,"a",(function(){return w})),n.d(t,"b",(function(){return E})),n.d(t,"c",(function(){return v})),n.d(t,"d",(function(){return h})),n.d(t,"e",(function(){return _}));var r=n(11),o=n(0),i=n.n(o),a=(n(25),n(15)),u=n(39),l=n(14),s=n(7),c=n(40),f=n.n(c),d=(n(54),n(17)),p=(n(66),function(e){var t=Object(u.a)();return t.displayName=e,t}("Router-History")),h=function(e){var t=Object(u.a)();return t.displayName=e,t}("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}Object(r.a)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return i.a.createElement(h.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.a.createElement(p.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.a.Component);i.a.Component;var m=function(e){function t(){return e.apply(this,arguments)||this}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(i.a.Component);var g={},y=0;function b(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(g[e])return g[e];var t=f.a.compile(e);return y<1e4&&(g[e]=t,y++),t}(e)(t,{pretty:!0})}function w(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return i.a.createElement(h.Consumer,null,(function(e){e||Object(l.a)(!1);var r=e.history,u=e.staticContext,c=o?r.push:r.replace,f=Object(a.c)(t?"string"===typeof n?b(n,t.params):Object(s.a)({},n,{pathname:b(n.pathname,t.params)}):n);return u?(c(f),null):i.a.createElement(m,{onMount:function(){c(f)},onUpdate:function(e,t){var n=Object(a.c)(t.to);Object(a.f)(n,Object(s.a)({},f,{key:n.key}))||c(f)},to:n})}))}var S={},x=0;function _(e,t){void 0===t&&(t={}),("string"===typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,i=void 0!==o&&o,a=n.strict,u=void 0!==a&&a,l=n.sensitive,s=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=S[n]||(S[n]={});if(r[e])return r[e];var o=[],i={regexp:f()(e,o,t),keys:o};return x<1e4&&(r[e]=i,x++),i}(n,{end:i,strict:u,sensitive:s}),o=r.regexp,a=r.keys,l=o.exec(e);if(!l)return null;var c=l[0],d=l.slice(1),p=e===c;return i&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:a.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(h.Consumer,null,(function(t){t||Object(l.a)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?_(n.pathname,e.props):t.match,o=Object(s.a)({},t,{location:n,match:r}),a=e.props,u=a.children,c=a.component,f=a.render;return Array.isArray(u)&&0===u.length&&(u=null),i.a.createElement(h.Provider,{value:o},o.match?u?"function"===typeof u?u(o):u:c?i.a.createElement(c,o):f?f(o):null:"function"===typeof u?u(o):null)}))},t}(i.a.Component);function T(e){return"/"===e.charAt(0)?e:"/"+e}function k(e,t){if(!e)return t;var n=T(e);return 0!==t.pathname.indexOf(n)?t:Object(s.a)({},t,{pathname:t.pathname.substr(n.length)})}function R(e){return"string"===typeof e?e:Object(a.e)(e)}function O(e){return function(){Object(l.a)(!1)}}function C(){}i.a.Component;i.a.Component;i.a.useContext},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(45),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function a(e){return"undefined"===typeof e}function u(e){return null!==e&&"object"===typeof e}function l(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function s(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n=0;d--){var p=a[d];"."===p?i(a,d):".."===p?(i(a,d),f++):f&&(i(a,d),f--)}if(!s)for(;f--;f)a.unshift("..");!s||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function u(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=u(t),o=u(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},s=n(14);function c(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function v(e,t,n,o){var i;"string"===typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(u){throw u instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):u}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function m(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"===typeof e?e(t,n):e;"string"===typeof i?"function"===typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),f({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=v(e,t,d(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,f({action:r,location:o}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(0),o=Object.prototype.hasOwnProperty;function i(){return"undefined"===typeof document||"undefined"===typeof document.visibilityState||"hidden"!==document.visibilityState}var a=new WeakMap,u=0;var l=new(function(){function e(e){void 0===e&&(e={}),this.__cache=new Map(Object.entries(e)),this.__listeners=[]}return e.prototype.get=function(e){var t=this.serializeKey(e)[0];return this.__cache.get(t)},e.prototype.set=function(e,t){var n=this.serializeKey(e)[0];this.__cache.set(n,t),this.notify()},e.prototype.keys=function(){return Array.from(this.__cache.keys())},e.prototype.has=function(e){var t=this.serializeKey(e)[0];return this.__cache.has(t)},e.prototype.clear=function(){this.__cache.clear(),this.notify()},e.prototype.delete=function(e){var t=this.serializeKey(e)[0];this.__cache.delete(t),this.notify()},e.prototype.serializeKey=function(e){var t=null;if("function"===typeof e)try{e=e()}catch(n){e=""}return Array.isArray(e)?(t=e,e=function(e){if(!e.length)return"";for(var t="arg",n=0;n-1&&(t.__listeners[r]=t.__listeners[t.__listeners.length-1],t.__listeners.length--)}}},e.prototype.notify=function(){for(var e=0,t=this.__listeners;en.errorRetryCount)){var a=Math.min(o.retryCount||0,8),u=~~((Math.random()+.5)*(1<0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0));return Promise.all(f).then((function(){return l.get(r)}))}return Promise.resolve(l.get(r))},O=function(e,t,n,r){var o=_[e];if(e&&o)for(var i=0;i0));return[2,Promise.all(h).then((function(){if(c)throw c;return l.get(o)}))]}if(c)throw c;return[2,s]}}))}))};p.Provider;var P=function(){for(var e=this,t=[],n=0;n=1&&(o=t[0]),t.length>2?(a=t[1],u=t[2]):"function"===typeof t[1]?a=t[1]:"object"===typeof t[1]&&(u=t[1]);var s=l.serializeKey(o),d=s[0],m=s[1],k=s[2],R=s[3];u=Object.assign({},c,Object(r.useContext)(p),u);var P=Object(r.useRef)(u);y((function(){P.current=u})),"undefined"===typeof a&&(a=u.fetcher);var A=function(){var e=l.get(d);return"undefined"===typeof e?u.initialData:e},j=A(),M=l.get(k),N=!!l.get(R),I=Object(r.useRef)({data:!1,error:!1,isValidating:!1}),z=Object(r.useRef)({data:j,error:M,isValidating:N});Object(r.useDebugValue)(z.current.data);var L=Object(r.useState)(null)[1],F=Object(r.useCallback)((function(e){var t=!1;for(var n in e)z.current[n]!==e[n]&&(z.current[n]=e[n],I.current[n]&&(t=!0));if(t||u.suspense){if(D.current)return;L({})}}),[]),D=Object(r.useRef)(!1),B=Object(r.useRef)(d),V=Object(r.useRef)({emit:function(e){for(var t,n=[],r=1;r=0&&(n[r]=n[n.length-1],n.pop())}},$=Object(r.useCallback)((function(t){return void 0===t&&(t={}),h(e,void 0,void 0,(function(){var e,n,r,o,i,s,c;return v(this,(function(f){switch(f.label){case 0:if(!d||!a)return[2,!1];if(D.current)return[2,!1];t=Object.assign({dedupe:!1},t),e=!0,n="undefined"!==typeof b[d]&&t.dedupe,f.label=1;case 1:return f.trys.push([1,6,,7]),F({isValidating:!0}),l.set(R,!0),n||O(d,void 0,void 0,!0),r=void 0,o=void 0,n?(o=w[d],[4,b[d]]):[3,3];case 2:return r=f.sent(),[3,5];case 3:return u.loadingTimeout&&!l.get(d)&&setTimeout((function(){e&&V.current.emit("onLoadingSlow",d,u)}),u.loadingTimeout),b[d]=null!==m?a.apply(void 0,m):a(d),w[d]=o=Date.now(),[4,b[d]];case 4:r=f.sent(),setTimeout((function(){delete b[d],delete w[d]}),u.dedupingInterval),V.current.emit("onSuccess",r,d,u),f.label=5;case 5:return w[d]>o||E[d]&&(o<=E[d]||o<=T[d]||0===T[d])?(F({isValidating:!1}),[2,!1]):(l.set(d,r),l.set(k,void 0),l.set(R,!1),i={isValidating:!1},"undefined"!==typeof z.current.error&&(i.error=void 0),u.compare(z.current.data,r)||(i.data=r),F(i),n||O(d,r,void 0,!1),[3,7]);case 6:return s=f.sent(),delete b[d],delete w[d],l.set(k,s),z.current.error!==s&&(F({isValidating:!1,error:s}),n||O(d,void 0,s,!1)),V.current.emit("onError",s,d,u),u.shouldRetryOnError&&(c=(t.retryCount||0)+1,V.current.emit("onErrorRetry",s,d,u,$,Object.assign({dedupe:!0},t,{retryCount:c}))),[3,7];case 7:return e=!1,[2,!0]}}))}))}),[d]);y((function(){if(d){D.current=!1;var e=z.current.data,t=A();B.current!==d&&(B.current=d),u.compare(e,t)||F({data:t});var n=function(){return $({dedupe:!0})};(u.revalidateOnMount||!u.initialData&&void 0===u.revalidateOnMount)&&("undefined"!==typeof t?g(n):n());var r=!1,o=function(){!r&&P.current.revalidateOnFocus&&(r=!0,n(),setTimeout((function(){return r=!1}),P.current.focusThrottleInterval))},i=function(){P.current.revalidateOnReconnect&&n()},a=function(e,t,r,o,i){void 0===e&&(e=!0),void 0===i&&(i=!0);var a={},l=!1;return"undefined"===typeof t||u.compare(z.current.data,t)||(a.data=t,l=!0),z.current.error!==r&&(a.error=r,l=!0),"undefined"!==typeof o&&z.current.isValidating!==o&&(a.isValidating=o,l=!0),l&&F(a),!!e&&(i?n():$())};return H(S,o),H(x,i),H(_,a),function(){F=function(){return null},D.current=!0,W(S,o),W(x,i),W(_,a)}}}),[d,$]),y((function(){var t=null;return P.current.refreshInterval&&(t=setTimeout((function n(){return h(e,void 0,void 0,(function(){return v(this,(function(e){switch(e.label){case 0:return z.current.error||!P.current.refreshWhenHidden&&!i()||!P.current.refreshWhenOffline&&!f()?[3,2]:[4,$({dedupe:!0})];case 1:e.sent(),e.label=2;case 2:return P.current.refreshInterval&&!z.current.error&&(t=setTimeout(n,P.current.refreshInterval)),[2]}}))}))}),P.current.refreshInterval)),function(){t&&clearTimeout(t)}}),[u.refreshInterval,u.refreshWhenHidden,u.refreshWhenOffline,$]);var G=Object(r.useMemo)((function(){var e={revalidate:$,mutate:U};return Object.defineProperties(e,{error:{get:function(){return I.current.error=!0,B.current===d?z.current.error:M},enumerable:!0},data:{get:function(){return I.current.data=!0,B.current===d?z.current.data:j},enumerable:!0},isValidating:{get:function(){return I.current.isValidating=!0,z.current.isValidating},enumerable:!0}}),e}),[$]);if(u.suspense){var q=l.get(d),Y=l.get(k);if("undefined"===typeof q&&(q=j),"undefined"===typeof Y&&(Y=M),"undefined"===typeof q&&"undefined"===typeof Y){if(b[d]||$(),b[d]&&"function"===typeof b[d].then)throw b[d];q=b[d]}if("undefined"===typeof q&&Y)throw Y;return{error:Y,data:q,revalidate:$,mutate:U,isValidating:z.current.isValidating}}return G};t.a=P},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:d(e)?2:p(e)?3:0}function l(e,t){return 2===u(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function s(e,t){return 2===u(e)?e.get(t):e[t]}function c(e,t,n){var r=u(e);2===r?e.set(t,n):3===r?(e.delete(t),e.add(n)):e[t]=n}function f(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function d(e){return B&&e instanceof Map}function p(e){return V&&e instanceof Set}function h(e){return e.o||e.t}function v(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=q(e);delete t[$];for(var n=G(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=g),Object.freeze(e),t&&a(e,(function(e,t){return m(t,!0)}),!0))}function g(){r(2)}function y(e){return null==e||"object"!=typeof e||Object.isFrozen(e)}function b(e){var t=Y[e];return t||r(19,e),t}function w(){return F}function S(e,t){t&&(b("Patches"),e.u=[],e.s=[],e.v=t)}function x(e){_(e),e.p.forEach(T),e.p=null}function _(e){e===F&&(F=e.l)}function E(e){return F={p:[],l:F,h:e,m:!0,_:0}}function T(e){var t=e[$];0===t.i||1===t.i?t.j():t.g=!0}function k(e,t){t._=t.p.length;var n=t.p[0],o=void 0!==e&&e!==n;return t.h.O||b("ES5").S(t,e,o),o?(n[$].P&&(x(t),r(4)),i(e)&&(e=R(t,e),t.l||C(t,e)),t.u&&b("Patches").M(n[$],e,t.u,t.s)):e=R(t,n,[]),x(t),t.u&&t.v(t.u,t.s),e!==H?e:void 0}function R(e,t,n){if(y(t))return t;var r=t[$];if(!r)return a(t,(function(o,i){return O(e,r,t,o,i,n)}),!0),t;if(r.A!==e)return t;if(!r.P)return C(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var o=4===r.i||5===r.i?r.o=v(r.k):r.o;a(3===r.i?new Set(o):o,(function(t,i){return O(e,r,o,t,i,n)})),C(e,o,!1),n&&e.u&&b("Patches").R(r,n,e.u,e.s)}return r.o}function O(e,t,n,r,a,u){if(o(a)){var s=R(e,a,u&&t&&3!==t.i&&!l(t.D,r)?u.concat(r):void 0);if(c(n,r,s),!o(s))return;e.m=!1}if(i(a)&&!y(a)){if(!e.h.N&&e._<1)return;R(e,a),t&&t.A.l||C(e,a)}}function C(e,t,n){void 0===n&&(n=!1),e.h.N&&e.m&&m(t,n)}function P(e,t){var n=e[$];return(n?h(n):e)[t]}function A(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function j(e){e.P||(e.P=!0,e.l&&j(e.l))}function M(e){e.o||(e.o=v(e.t))}function N(e,t,n){var r=d(t)?b("MapSet").T(t,n):p(t)?b("MapSet").F(t,n):e.O?function(e,t){var n=Array.isArray(e),r={i:n?1:0,A:t?t.A:w(),P:!1,I:!1,D:{},l:t,t:e,k:null,o:null,j:null,C:!1},o=r,i=K;n&&(o=[r],i=Q);var a=Proxy.revocable(o,i),u=a.revoke,l=a.proxy;return r.k=l,r.j=u,l}(t,n):b("ES5").J(t,n);return(n?n.A:w()).p.push(r),r}function I(e){return o(e)||r(22,e),function e(t){if(!i(t))return t;var n,r=t[$],o=u(t);if(r){if(!r.P&&(r.i<4||!b("ES5").K(r)))return r.t;r.I=!0,n=z(t,o),r.I=!1}else n=z(t,o);return a(n,(function(t,o){r&&s(r.t,t)===o||c(n,t,e(o))})),3===o?new Set(n):n}(e)}function z(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return v(e)}var L,F,D="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),B="undefined"!=typeof Map,V="undefined"!=typeof Set,U="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,H=D?Symbol.for("immer-nothing"):((L={})["immer-nothing"]=!0,L),W=D?Symbol.for("immer-draftable"):"__$immer_draftable",$=D?Symbol.for("immer-state"):"__$immer_state",G=("undefined"!=typeof Symbol&&Symbol.iterator,"undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames),q=Object.getOwnPropertyDescriptors||function(e){var t={};return G(e).forEach((function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)})),t},Y={},K={get:function(e,t){if(t===$)return e;var n=h(e);if(!l(n,t))return function(e,t,n){var r,o=A(t,n);return o?"value"in o?o.value:null===(r=o.get)||void 0===r?void 0:r.call(e.k):void 0}(e,n,t);var r=n[t];return e.I||!i(r)?r:r===P(e.t,t)?(M(e),e.o[t]=N(e.A.h,r,e)):r},has:function(e,t){return t in h(e)},ownKeys:function(e){return Reflect.ownKeys(h(e))},set:function(e,t,n){var r=A(h(e),t);if(null==r?void 0:r.set)return r.set.call(e.k,n),!0;if(e.D[t]=!0,!e.P){if(f(n,P(h(e),t))&&(void 0!==n||l(e.t,t)))return!0;M(e),j(e)}return e.o[t]=n,!0},deleteProperty:function(e,t){return void 0!==P(e.t,t)||t in e.t?(e.D[t]=!1,M(e),j(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=h(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.i||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty:function(){r(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){r(12)}},Q={};a(K,(function(e,t){Q[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Q.deleteProperty=function(e,t){return K.deleteProperty.call(this,e[0],t)},Q.set=function(e,t,n){return K.set.call(this,e[0],t,n,e[0])};var X=new(function(){function e(e){this.O=U,this.N=!1,"boolean"==typeof(null==e?void 0:e.useProxies)&&this.setUseProxies(e.useProxies),"boolean"==typeof(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),this.produce=this.produce.bind(this),this.produceWithPatches=this.produceWithPatches.bind(this)}var t=e.prototype;return t.produce=function(e,t,n){if("function"==typeof e&&"function"!=typeof t){var o=t;t=e;var a=this;return function(e){var n=this;void 0===e&&(e=o);for(var r=arguments.length,i=Array(r>1?r-1:0),u=1;u1?n-1:0),i=1;i=0;n--){var r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}var i=b("Patches").$;return o(e)?i(e,t):this.produce(e,(function(e){return i(e,t.slice(n+1))}))},e}()),J=X.produce;X.produceWithPatches.bind(X),X.setAutoFreeze.bind(X),X.setUseProxies.bind(X),X.applyPatches.bind(X),X.createDraft.bind(X),X.finishDraft.bind(X);t.a=J},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(26);function o(e,t){if(e){if("string"===typeof e)return Object(r.a)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Object(r.a)(e,t):void 0}}},function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",o="day",i="week",a="month",u="quarter",l="year",s="date",c=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},p={s:d,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+d(r,2,"0")+":"+d(o,2,"0")},m:function e(t,n){if(t.date()e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(i)})),e.exports=u}).call(this,n(126))},function(e,t,n){"use strict";var r=n(12),o=n(128),i=n(130),a=n(46),u=n(131),l=n(134),s=n(135),c=n(50);e.exports=function(e){return new Promise((function(t,n){var f=e.data,d=e.headers;r.isFormData(f)&&delete d["Content-Type"],(r.isBlob(f)||r.isFile(f))&&f.type&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",v=unescape(encodeURIComponent(e.auth.password))||"";d.Authorization="Basic "+btoa(h+":"+v)}var m=u(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),a(m,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in p?l(p.getAllResponseHeaders()):null,i={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:r,config:e,request:p};o(t,n,i),p=null}},p.onabort=function(){p&&(n(c("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){n(c("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(c(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||s(m))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}if("setRequestHeader"in p&&r.forEach(d,(function(e,t){"undefined"===typeof f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(y){if("json"!==e.responseType)throw y}"function"===typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),n(e),p=null)})),f||(f=null),p.send(f)}))}},function(e,t,n){"use strict";var r=n(129);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(12);e.exports=function(e,t){t=t||{};var n={},o=["url","method","data"],i=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],u=["validateStatus"];function l(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function s(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(n[o]=l(void 0,e[o])):n[o]=l(e[o],t[o])}r.forEach(o,(function(e){r.isUndefined(t[e])||(n[e]=l(void 0,t[e]))})),r.forEach(i,s),r.forEach(a,(function(o){r.isUndefined(t[o])?r.isUndefined(e[o])||(n[o]=l(void 0,e[o])):n[o]=l(void 0,t[o])})),r.forEach(u,(function(r){r in t?n[r]=l(e[r],t[r]):r in e&&(n[r]=l(void 0,e[r]))}));var c=o.concat(i).concat(a).concat(u),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===c.indexOf(e)}));return r.forEach(f,s),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return n.test(e)}},function(e,t,n){"use strict";e.exports=n(169)},,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(20),o=n(0);function i(e){var t=Object(o.useState)(e),n=t[1];return[t[0],Object(o.useCallback)((function(e){n(Object(r.a)(e))}),[])]}},function(e,t,n){var r=n(81);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){e.exports=n(121)},function(e,t,n){e.exports=function(){"use strict";return function(e,t,n){e=e||{};var r=t.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};n.en.relativeTime=o;var i=function(t,r,i,a){for(var u,l,s,c=i.$locale().relativeTime||o,f=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],d=f.length,p=0;p0,v<=h.r||!h.r){v<=1&&p>0&&(h=f[p-1]);var m=c[h.l];l="string"==typeof m?m.replace("%d",v):m(v,r,h.l,s);break}}return r?l:(s?c.future:c.past).replace("%s",l)};r.to=function(e,t){return i(e,t,this,!0)},r.from=function(e,t){return i(e,t,this)};var a=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(a(this),e)},r.fromNow=function(e){return this.from(a(this),e)}}}()},function(e,t,n){"use strict";(function(e){var r=n(0);function o(t){var n;n="undefined"!==typeof window?window:"undefined"!==typeof self?self:e;var r="undefined"!==typeof document&&document.attachEvent;if(!r){var o=function(){var e=n.requestAnimationFrame||n.mozRequestAnimationFrame||n.webkitRequestAnimationFrame||function(e){return n.setTimeout(e,20)};return function(t){return e(t)}}(),i=function(){var e=n.cancelAnimationFrame||n.mozCancelAnimationFrame||n.webkitCancelAnimationFrame||n.clearTimeout;return function(t){return e(t)}}(),a=function(e){var t=e.__resizeTriggers__,n=t.firstElementChild,r=t.lastElementChild,o=n.firstElementChild;r.scrollLeft=r.scrollWidth,r.scrollTop=r.scrollHeight,o.style.width=n.offsetWidth+1+"px",o.style.height=n.offsetHeight+1+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight},u=function(e){if(!(e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)){var t=this;a(this),this.__resizeRAF__&&i(this.__resizeRAF__),this.__resizeRAF__=o((function(){(function(e){return e.offsetWidth!=e.__resizeLast__.width||e.offsetHeight!=e.__resizeLast__.height})(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(n){n.call(t,e)})))}))}},l=!1,s="",c="animationstart",f="Webkit Moz O ms".split(" "),d="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),p=document.createElement("fakeelement");if(void 0!==p.style.animationName&&(l=!0),!1===l)for(var h=0;h div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',r=e.head||e.getElementsByTagName("head")[0],o=e.createElement("style");o.id="detectElementResize",o.type="text/css",null!=t&&o.setAttribute("nonce",t),o.styleSheet?o.styleSheet.cssText=n:o.appendChild(e.createTextNode(n)),r.appendChild(o)}}(i),e.__resizeLast__={},e.__resizeListeners__=[],(e.__resizeTriggers__=i.createElement("div")).className="resize-triggers",e.__resizeTriggers__.innerHTML='
',e.appendChild(e.__resizeTriggers__),a(e),e.addEventListener("scroll",u,!0),c&&(e.__resizeTriggers__.__animationListener__=function(t){t.animationName==v&&a(e)},e.__resizeTriggers__.addEventListener(c,e.__resizeTriggers__.__animationListener__))}e.__resizeListeners__.push(o)}},removeResizeListener:function(e,t){if(r)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",u,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(c,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(n){}}}}}var i=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},a=function(){function e(e,t){for(var n=0;n=t?e.call(null):r.id=requestAnimationFrame(o)}))};return r}var d=null;function p(e){if(void 0===e&&(e=!1),null===d||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var r=document.createElement("div"),o=r.style;return o.width="100px",o.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?d="positive-descending":(t.scrollLeft=1,d=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),d}return d}var h=function(e,t){return e};function v(e){var t,n,a=e.getItemOffset,s=e.getEstimatedTotalSize,d=e.getItemSize,v=e.getOffsetForIndexAndAlignment,g=e.getStartIndexForOffset,y=e.getStopIndexForStartIndex,b=e.initInstanceProps,w=e.shouldResetStyleCacheOnItemSizeChange,S=e.validateProps;return n=t=function(e){function t(t){var n;return(n=e.call(this,t)||this)._instanceProps=b(n.props,i(i(n))),n._outerRef=void 0,n._resetIsScrollingTimeoutId=null,n.state={instance:i(i(n)),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"===typeof n.props.initialScrollOffset?n.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},n._callOnItemsRendered=void 0,n._callOnItemsRendered=u((function(e,t,r,o){return n.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:r,visibleStopIndex:o})})),n._callOnScroll=void 0,n._callOnScroll=u((function(e,t,r){return n.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:r})})),n._getItemStyle=void 0,n._getItemStyle=function(e){var t,r=n.props,o=r.direction,i=r.itemSize,u=r.layout,l=n._getItemStyleCache(w&&i,w&&u,w&&o);if(l.hasOwnProperty(e))t=l[e];else{var s,c=a(n.props,e,n._instanceProps),f=d(n.props,e,n._instanceProps),p="horizontal"===o||"horizontal"===u;l[e]=((s={position:"absolute"})["rtl"===o?"right":"left"]=p?c:0,s.top=p?0:c,s.height=p?"100%":f,s.width=p?f:"100%",t=s)}return t},n._getItemStyleCache=void 0,n._getItemStyleCache=u((function(e,t,n){return{}})),n._onScrollHorizontal=function(e){var t=e.currentTarget,r=t.clientWidth,o=t.scrollLeft,i=t.scrollWidth;n.setState((function(e){if(e.scrollOffset===o)return null;var t=n.props.direction,a=o;if("rtl"===t)switch(p()){case"negative":a=-o;break;case"positive-descending":a=i-r-o}return a=Math.max(0,Math.min(a,i-r)),{isScrolling:!0,scrollDirection:e.scrollOffset0)for(var C=k;C<=R;C++)O.push(Object(l.createElement)(t,{data:d,key:v(C,d),index:C,isScrolling:w?x:void 0,style:this._getItemStyle(C)}));var P=s(this.props,this._instanceProps);return Object(l.createElement)(g||y||"div",{className:n,onScroll:E,ref:this._outerRefSetter,style:Object(r.a)({position:"relative",height:i,width:S,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},b)},Object(l.createElement)(u||c||"div",{children:O,ref:a,style:{height:_?"100%":P,pointerEvents:x?"none":void 0,width:_?P:"100%"}}))},n._callPropsCallbacks=function(){if("function"===typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],r=e[2],o=e[3];this._callOnItemsRendered(t,n,r,o)}if("function"===typeof this.props.onScroll){var i=this.state,a=i.scrollDirection,u=i.scrollOffset,l=i.scrollUpdateWasRequested;this._callOnScroll(a,u,l)}},n._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,r=this.state,o=r.isScrolling,i=r.scrollDirection,a=r.scrollOffset;if(0===t)return[0,0,0,0];var u=g(this.props,a,this._instanceProps),l=y(this.props,u,a,this._instanceProps),s=o&&"backward"!==i?1:Math.max(1,n),c=o&&"forward"!==i?1:Math.max(1,n);return[Math.max(0,u-s),Math.max(0,Math.min(t-1,l+c)),u,l]},t}(l.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},n}var m=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},g=v({getItemOffset:function(e,t){return t*e.itemSize},getItemSize:function(e,t){return e.itemSize},getEstimatedTotalSize:function(e){var t=e.itemCount;return e.itemSize*t},getOffsetForIndexAndAlignment:function(e,t,n,r){var o=e.direction,i=e.height,a=e.itemCount,u=e.itemSize,l=e.layout,s=e.width,c="horizontal"===o||"horizontal"===l?s:i,f=Math.max(0,a*u-c),d=Math.min(f,t*u),p=Math.max(0,t*u-c+u);switch("smart"===n&&(n=r>=p-c&&r<=d+c?"auto":"center"),n){case"start":return d;case"end":return p;case"center":var h=Math.round(p+(d-p)/2);return hf+Math.floor(c/2)?f:h;case"auto":default:return r>=p&&r<=d?r:rP.length&&P.push(e)}function M(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var u=!1;if(null===e)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case i:case a:u=!0}}if(u)return n(r,e,""===t?"."+I(e,0):t),1;if(u=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l