From f987c72a83c70eec43ca13b950a8ba5c3ed0acdc Mon Sep 17 00:00:00 2001 From: peterpei1186861238 Date: Sat, 19 Sep 2020 11:48:05 +0800 Subject: [PATCH] ver2 --- Core.py | 4 + config.json | 4 +- css/mdui.min.css | 6 - css/mdui.min.css.map | 1 - index.html | 116 +- js/mdui.esm.js | 5970 ------------------------------------------ js/mdui.esm.js.map | 1 - js/mdui.min.js | 7 - js/mdui.min.js.map | 1 - srun.py | 32 +- 10 files changed, 113 insertions(+), 6029 deletions(-) delete mode 100644 css/mdui.min.css delete mode 100644 css/mdui.min.css.map delete mode 100644 js/mdui.esm.js delete mode 100644 js/mdui.esm.js.map delete mode 100644 js/mdui.min.js delete mode 100644 js/mdui.min.js.map diff --git a/Core.py b/Core.py index c2a19c1..08f1fa2 100644 --- a/Core.py +++ b/Core.py @@ -18,8 +18,12 @@ def getConfig(self): infoOpen.close() global config config = json.loads(info) + if len(config["accounts"]["account0"]["username"]) > 0: + self.username = config["accounts"]["account0"]["username"] + self.password = config["accounts"]["account0"]["password"] return config + def login(self): '''登陆''' password_enc = self.password_encrypt(self.password, diff --git a/config.json b/config.json index bc6eca6..5492f8f 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,8 @@ { "accounts": { "account0":{ - "username":"", - "password":"" + "username":"123", + "password":"456" }, "account1":{ "username":"", diff --git a/css/mdui.min.css b/css/mdui.min.css deleted file mode 100644 index a77b617..0000000 --- a/css/mdui.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * mdui 1.0.0 (https://mdui.org) - * Copyright 2016-2020 zdhxiong - * Licensed under MIT - *//*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*{-webkit-tap-highlight-color:transparent}body{color:rgba(0,0,0,.87);font-size:14px;font-family:Roboto,Noto,Helvetica,Arial,sans-serif;background-color:#fff}@media (min-width:600px){body{font-size:14.5px}}@media (min-width:1024px){body{font-size:15px}}body ::-webkit-scrollbar{width:5px;height:5px;background:0 0}@media (min-width:1024px){body ::-webkit-scrollbar{width:8px;height:8px}}body ::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2)}body.mdui-locked{overflow:hidden}.mdui-overlay{position:fixed;top:-5000px;right:-5000px;bottom:-5000px;left:-5000px;z-index:2000;background:rgba(0,0,0,.4);-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:hidden;opacity:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,visibility;transition-property:opacity,visibility;will-change:opacity}.mdui-overlay-show{visibility:visible;opacity:1}.mdui-no-transition{-webkit-transition-property:none!important;transition-property:none!important}.mdui-theme-layout-dark{color:#fff;background-color:#303030}.mdui-theme-layout-dark ::-webkit-scrollbar{width:5px;height:5px;background:0 0}@media (min-width:1024px){.mdui-theme-layout-dark ::-webkit-scrollbar{width:8px;height:8px}}.mdui-theme-layout-dark ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto{color:#fff;background-color:#303030}.mdui-theme-layout-auto ::-webkit-scrollbar{width:5px;height:5px;background:0 0}.mdui-theme-layout-auto ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3)}}@media (prefers-color-scheme:dark) and (min-width:1024px){.mdui-theme-layout-auto ::-webkit-scrollbar{width:8px;height:8px}}.mdui-theme-primary-amber .mdui-color-theme{background-color:#ffc107!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-50{background-color:#fff8e1!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-100{background-color:#ffecb3!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-200{background-color:#ffe082!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-300{background-color:#ffd54f!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-400{background-color:#ffca28!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-500{background-color:#ffc107!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-600{background-color:#ffb300!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-700{background-color:#ffa000!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-800{background-color:#ff8f00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-amber .mdui-color-theme-900{background-color:#ff6f00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme{background-color:#2196f3!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-50{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-100{background-color:#bbdefb!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-200{background-color:#90caf9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-300{background-color:#64b5f6!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-400{background-color:#42a5f5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-500{background-color:#2196f3!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue .mdui-color-theme-600{background-color:#1e88e5!important;color:#fff!important}.mdui-theme-primary-blue .mdui-color-theme-700{background-color:#1976d2!important;color:#fff!important}.mdui-theme-primary-blue .mdui-color-theme-800{background-color:#1565c0!important;color:#fff!important}.mdui-theme-primary-blue .mdui-color-theme-900{background-color:#0d47a1!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme{background-color:#607d8b!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme-50{background-color:#eceff1!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue-grey .mdui-color-theme-100{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue-grey .mdui-color-theme-200{background-color:#b0bec5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue-grey .mdui-color-theme-300{background-color:#90a4ae!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-blue-grey .mdui-color-theme-400{background-color:#78909c!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme-500{background-color:#607d8b!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme-600{background-color:#546e7a!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme-700{background-color:#455a64!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme-800{background-color:#37474f!important;color:#fff!important}.mdui-theme-primary-blue-grey .mdui-color-theme-900{background-color:#263238!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme{background-color:#795548!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-50{background-color:#efebe9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-brown .mdui-color-theme-100{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-brown .mdui-color-theme-200{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-brown .mdui-color-theme-300{background-color:#a1887f!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-400{background-color:#8d6e63!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-500{background-color:#795548!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-600{background-color:#6d4c41!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-700{background-color:#5d4037!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-800{background-color:#4e342e!important;color:#fff!important}.mdui-theme-primary-brown .mdui-color-theme-900{background-color:#3e2723!important;color:#fff!important}.mdui-theme-primary-cyan .mdui-color-theme{background-color:#00bcd4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-50{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-100{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-200{background-color:#80deea!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-300{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-400{background-color:#26c6da!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-500{background-color:#00bcd4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-600{background-color:#00acc1!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-cyan .mdui-color-theme-700{background-color:#0097a7!important;color:#fff!important}.mdui-theme-primary-cyan .mdui-color-theme-800{background-color:#00838f!important;color:#fff!important}.mdui-theme-primary-cyan .mdui-color-theme-900{background-color:#006064!important;color:#fff!important}.mdui-theme-primary-deep-orange .mdui-color-theme{background-color:#ff5722!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-50{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-100{background-color:#ffccbc!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-200{background-color:#ffab91!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-300{background-color:#ff8a65!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-400{background-color:#ff7043!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-500{background-color:#ff5722!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-orange .mdui-color-theme-600{background-color:#f4511e!important;color:#fff!important}.mdui-theme-primary-deep-orange .mdui-color-theme-700{background-color:#e64a19!important;color:#fff!important}.mdui-theme-primary-deep-orange .mdui-color-theme-800{background-color:#d84315!important;color:#fff!important}.mdui-theme-primary-deep-orange .mdui-color-theme-900{background-color:#bf360c!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme{background-color:#673ab7!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-50{background-color:#ede7f6!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-purple .mdui-color-theme-100{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-purple .mdui-color-theme-200{background-color:#b39ddb!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-deep-purple .mdui-color-theme-300{background-color:#9575cd!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-400{background-color:#7e57c2!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-500{background-color:#673ab7!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-600{background-color:#5e35b1!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-700{background-color:#512da8!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-800{background-color:#4527a0!important;color:#fff!important}.mdui-theme-primary-deep-purple .mdui-color-theme-900{background-color:#311b92!important;color:#fff!important}.mdui-theme-primary-green .mdui-color-theme{background-color:#4caf50!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-50{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-100{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-200{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-300{background-color:#81c784!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-400{background-color:#66bb6a!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-500{background-color:#4caf50!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-green .mdui-color-theme-600{background-color:#43a047!important;color:#fff!important}.mdui-theme-primary-green .mdui-color-theme-700{background-color:#388e3c!important;color:#fff!important}.mdui-theme-primary-green .mdui-color-theme-800{background-color:#2e7d32!important;color:#fff!important}.mdui-theme-primary-green .mdui-color-theme-900{background-color:#1b5e20!important;color:#fff!important}.mdui-theme-primary-grey .mdui-color-theme{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-50{background-color:#fafafa!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-100{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-200{background-color:#eee!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-300{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-400{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-500{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-grey .mdui-color-theme-600{background-color:#757575!important;color:#fff!important}.mdui-theme-primary-grey .mdui-color-theme-700{background-color:#616161!important;color:#fff!important}.mdui-theme-primary-grey .mdui-color-theme-800{background-color:#424242!important;color:#fff!important}.mdui-theme-primary-grey .mdui-color-theme-900{background-color:#212121!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme{background-color:#3f51b5!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-50{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-indigo .mdui-color-theme-100{background-color:#c5cae9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-indigo .mdui-color-theme-200{background-color:#9fa8da!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-indigo .mdui-color-theme-300{background-color:#7986cb!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-400{background-color:#5c6bc0!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-500{background-color:#3f51b5!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-600{background-color:#3949ab!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-700{background-color:#303f9f!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-800{background-color:#283593!important;color:#fff!important}.mdui-theme-primary-indigo .mdui-color-theme-900{background-color:#1a237e!important;color:#fff!important}.mdui-theme-primary-light-blue .mdui-color-theme{background-color:#03a9f4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-50{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-100{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-200{background-color:#81d4fa!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-300{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-400{background-color:#29b6f6!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-500{background-color:#03a9f4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-600{background-color:#039be5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-blue .mdui-color-theme-700{background-color:#0288d1!important;color:#fff!important}.mdui-theme-primary-light-blue .mdui-color-theme-800{background-color:#0277bd!important;color:#fff!important}.mdui-theme-primary-light-blue .mdui-color-theme-900{background-color:#01579b!important;color:#fff!important}.mdui-theme-primary-light-green .mdui-color-theme{background-color:#8bc34a!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-50{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-100{background-color:#dcedc8!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-200{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-300{background-color:#aed581!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-400{background-color:#9ccc65!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-500{background-color:#8bc34a!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-600{background-color:#7cb342!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-700{background-color:#689f38!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-light-green .mdui-color-theme-800{background-color:#558b2f!important;color:#fff!important}.mdui-theme-primary-light-green .mdui-color-theme-900{background-color:#33691e!important;color:#fff!important}.mdui-theme-primary-lime .mdui-color-theme{background-color:#cddc39!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-50{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-100{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-200{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-300{background-color:#dce775!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-400{background-color:#d4e157!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-500{background-color:#cddc39!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-600{background-color:#c0ca33!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-700{background-color:#afb42b!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-800{background-color:#9e9d24!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-lime .mdui-color-theme-900{background-color:#827717!important;color:#fff!important}.mdui-theme-primary-orange .mdui-color-theme{background-color:#ff9800!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-50{background-color:#fff3e0!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-100{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-200{background-color:#ffcc80!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-300{background-color:#ffb74d!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-400{background-color:#ffa726!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-500{background-color:#ff9800!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-600{background-color:#fb8c00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-700{background-color:#f57c00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-800{background-color:#ef6c00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-orange .mdui-color-theme-900{background-color:#e65100!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme{background-color:#e91e63!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme-50{background-color:#fce4ec!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-pink .mdui-color-theme-100{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-pink .mdui-color-theme-200{background-color:#f48fb1!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-pink .mdui-color-theme-300{background-color:#f06292!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-pink .mdui-color-theme-400{background-color:#ec407a!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme-500{background-color:#e91e63!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme-600{background-color:#d81b60!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme-700{background-color:#c2185b!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme-800{background-color:#ad1457!important;color:#fff!important}.mdui-theme-primary-pink .mdui-color-theme-900{background-color:#880e4f!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme{background-color:#9c27b0!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-50{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-purple .mdui-color-theme-100{background-color:#e1bee7!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-purple .mdui-color-theme-200{background-color:#ce93d8!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-purple .mdui-color-theme-300{background-color:#ba68c8!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-400{background-color:#ab47bc!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-500{background-color:#9c27b0!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-600{background-color:#8e24aa!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-700{background-color:#7b1fa2!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-800{background-color:#6a1b9a!important;color:#fff!important}.mdui-theme-primary-purple .mdui-color-theme-900{background-color:#4a148c!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme{background-color:#f44336!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme-50{background-color:#ffebee!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-red .mdui-color-theme-100{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-red .mdui-color-theme-200{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-red .mdui-color-theme-300{background-color:#e57373!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-red .mdui-color-theme-400{background-color:#ef5350!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme-500{background-color:#f44336!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme-600{background-color:#e53935!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme-700{background-color:#d32f2f!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme-800{background-color:#c62828!important;color:#fff!important}.mdui-theme-primary-red .mdui-color-theme-900{background-color:#b71c1c!important;color:#fff!important}.mdui-theme-primary-teal .mdui-color-theme{background-color:#009688!important;color:#fff!important}.mdui-theme-primary-teal .mdui-color-theme-50{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-teal .mdui-color-theme-100{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-teal .mdui-color-theme-200{background-color:#80cbc4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-teal .mdui-color-theme-300{background-color:#4db6ac!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-teal .mdui-color-theme-400{background-color:#26a69a!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-teal .mdui-color-theme-500{background-color:#009688!important;color:#fff!important}.mdui-theme-primary-teal .mdui-color-theme-600{background-color:#00897b!important;color:#fff!important}.mdui-theme-primary-teal .mdui-color-theme-700{background-color:#00796b!important;color:#fff!important}.mdui-theme-primary-teal .mdui-color-theme-800{background-color:#00695c!important;color:#fff!important}.mdui-theme-primary-teal .mdui-color-theme-900{background-color:#004d40!important;color:#fff!important}.mdui-theme-primary-yellow .mdui-color-theme{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-50{background-color:#fffde7!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-100{background-color:#fff9c4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-200{background-color:#fff59d!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-300{background-color:#fff176!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-400{background-color:#ffee58!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-500{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-600{background-color:#fdd835!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-700{background-color:#fbc02d!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-800{background-color:#f9a825!important;color:rgba(0,0,0,.87)!important}.mdui-theme-primary-yellow .mdui-color-theme-900{background-color:#f57f17!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-amber .mdui-color-theme-accent{background-color:#ffd740!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-amber .mdui-color-theme-a100{background-color:#ffe57f!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-amber .mdui-color-theme-a200{background-color:#ffd740!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-amber .mdui-color-theme-a400{background-color:#ffc400!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-amber .mdui-color-theme-a700{background-color:#ffab00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-blue .mdui-color-theme-accent{background-color:#448aff!important;color:#fff!important}.mdui-theme-accent-blue .mdui-color-theme-a100{background-color:#82b1ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-blue .mdui-color-theme-a200{background-color:#448aff!important;color:#fff!important}.mdui-theme-accent-blue .mdui-color-theme-a400{background-color:#2979ff!important;color:#fff!important}.mdui-theme-accent-blue .mdui-color-theme-a700{background-color:#2962ff!important;color:#fff!important}.mdui-theme-accent-cyan .mdui-color-theme-accent{background-color:#18ffff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-cyan .mdui-color-theme-a100{background-color:#84ffff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-cyan .mdui-color-theme-a200{background-color:#18ffff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-cyan .mdui-color-theme-a400{background-color:#00e5ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-cyan .mdui-color-theme-a700{background-color:#00b8d4!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-deep-orange .mdui-color-theme-accent{background-color:#ff6e40!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a100{background-color:#ff9e80!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a200{background-color:#ff6e40!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a400{background-color:#ff3d00!important;color:#fff!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a700{background-color:#dd2c00!important;color:#fff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-accent{background-color:#7c4dff!important;color:#fff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a100{background-color:#b388ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a200{background-color:#7c4dff!important;color:#fff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a400{background-color:#651fff!important;color:#fff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a700{background-color:#6200ea!important;color:#fff!important}.mdui-theme-accent-green .mdui-color-theme-accent{background-color:#69f0ae!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-green .mdui-color-theme-a100{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-green .mdui-color-theme-a200{background-color:#69f0ae!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-green .mdui-color-theme-a400{background-color:#00e676!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-green .mdui-color-theme-a700{background-color:#00c853!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-indigo .mdui-color-theme-accent{background-color:#536dfe!important;color:#fff!important}.mdui-theme-accent-indigo .mdui-color-theme-a100{background-color:#8c9eff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-indigo .mdui-color-theme-a200{background-color:#536dfe!important;color:#fff!important}.mdui-theme-accent-indigo .mdui-color-theme-a400{background-color:#3d5afe!important;color:#fff!important}.mdui-theme-accent-indigo .mdui-color-theme-a700{background-color:#304ffe!important;color:#fff!important}.mdui-theme-accent-light-blue .mdui-color-theme-accent{background-color:#40c4ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-blue .mdui-color-theme-a100{background-color:#80d8ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-blue .mdui-color-theme-a200{background-color:#40c4ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-blue .mdui-color-theme-a400{background-color:#00b0ff!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-blue .mdui-color-theme-a700{background-color:#0091ea!important;color:#fff!important}.mdui-theme-accent-light-green .mdui-color-theme-accent{background-color:#b2ff59!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-green .mdui-color-theme-a100{background-color:#ccff90!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-green .mdui-color-theme-a200{background-color:#b2ff59!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-green .mdui-color-theme-a400{background-color:#76ff03!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-light-green .mdui-color-theme-a700{background-color:#64dd17!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-lime .mdui-color-theme-accent{background-color:#eeff41!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-lime .mdui-color-theme-a100{background-color:#f4ff81!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-lime .mdui-color-theme-a200{background-color:#eeff41!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-lime .mdui-color-theme-a400{background-color:#c6ff00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-lime .mdui-color-theme-a700{background-color:#aeea00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-orange .mdui-color-theme-accent{background-color:#ffab40!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-orange .mdui-color-theme-a100{background-color:#ffd180!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-orange .mdui-color-theme-a200{background-color:#ffab40!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-orange .mdui-color-theme-a400{background-color:#ff9100!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-orange .mdui-color-theme-a700{background-color:#ff6d00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-pink .mdui-color-theme-accent{background-color:#ff4081!important;color:#fff!important}.mdui-theme-accent-pink .mdui-color-theme-a100{background-color:#ff80ab!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-pink .mdui-color-theme-a200{background-color:#ff4081!important;color:#fff!important}.mdui-theme-accent-pink .mdui-color-theme-a400{background-color:#f50057!important;color:#fff!important}.mdui-theme-accent-pink .mdui-color-theme-a700{background-color:#c51162!important;color:#fff!important}.mdui-theme-accent-purple .mdui-color-theme-accent{background-color:#e040fb!important;color:#fff!important}.mdui-theme-accent-purple .mdui-color-theme-a100{background-color:#ea80fc!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-purple .mdui-color-theme-a200{background-color:#e040fb!important;color:#fff!important}.mdui-theme-accent-purple .mdui-color-theme-a400{background-color:#d500f9!important;color:#fff!important}.mdui-theme-accent-purple .mdui-color-theme-a700{background-color:#a0f!important;color:#fff!important}.mdui-theme-accent-red .mdui-color-theme-accent{background-color:#ff5252!important;color:#fff!important}.mdui-theme-accent-red .mdui-color-theme-a100{background-color:#ff8a80!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-red .mdui-color-theme-a200{background-color:#ff5252!important;color:#fff!important}.mdui-theme-accent-red .mdui-color-theme-a400{background-color:#ff1744!important;color:#fff!important}.mdui-theme-accent-red .mdui-color-theme-a700{background-color:#d50000!important;color:#fff!important}.mdui-theme-accent-teal .mdui-color-theme-accent{background-color:#64ffda!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-teal .mdui-color-theme-a100{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-teal .mdui-color-theme-a200{background-color:#64ffda!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-teal .mdui-color-theme-a400{background-color:#1de9b6!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-teal .mdui-color-theme-a700{background-color:#00bfa5!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-yellow .mdui-color-theme-accent{background-color:#ff0!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-yellow .mdui-color-theme-a100{background-color:#ffff8d!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-yellow .mdui-color-theme-a200{background-color:#ff0!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-yellow .mdui-color-theme-a400{background-color:#ffea00!important;color:rgba(0,0,0,.87)!important}.mdui-theme-accent-yellow .mdui-color-theme-a700{background-color:#ffd600!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber{background-color:#ffc107!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-50{background-color:#fff8e1!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-100{background-color:#ffecb3!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-200{background-color:#ffe082!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-300{background-color:#ffd54f!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-400{background-color:#ffca28!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-500{background-color:#ffc107!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-600{background-color:#ffb300!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-700{background-color:#ffa000!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-800{background-color:#ff8f00!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-900{background-color:#ff6f00!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue{background-color:#2196f3!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-50{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-100{background-color:#bbdefb!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-200{background-color:#90caf9!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-300{background-color:#64b5f6!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-400{background-color:#42a5f5!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-500{background-color:#2196f3!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-600{background-color:#1e88e5!important;color:#fff!important}.mdui-color-blue-700{background-color:#1976d2!important;color:#fff!important}.mdui-color-blue-800{background-color:#1565c0!important;color:#fff!important}.mdui-color-blue-900{background-color:#0d47a1!important;color:#fff!important}.mdui-color-blue-grey{background-color:#607d8b!important;color:#fff!important}.mdui-color-blue-grey-50{background-color:#eceff1!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-grey-100{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-grey-200{background-color:#b0bec5!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-grey-300{background-color:#90a4ae!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-grey-400{background-color:#78909c!important;color:#fff!important}.mdui-color-blue-grey-500{background-color:#607d8b!important;color:#fff!important}.mdui-color-blue-grey-600{background-color:#546e7a!important;color:#fff!important}.mdui-color-blue-grey-700{background-color:#455a64!important;color:#fff!important}.mdui-color-blue-grey-800{background-color:#37474f!important;color:#fff!important}.mdui-color-blue-grey-900{background-color:#263238!important;color:#fff!important}.mdui-color-brown{background-color:#795548!important;color:#fff!important}.mdui-color-brown-50{background-color:#efebe9!important;color:rgba(0,0,0,.87)!important}.mdui-color-brown-100{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)!important}.mdui-color-brown-200{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)!important}.mdui-color-brown-300{background-color:#a1887f!important;color:#fff!important}.mdui-color-brown-400{background-color:#8d6e63!important;color:#fff!important}.mdui-color-brown-500{background-color:#795548!important;color:#fff!important}.mdui-color-brown-600{background-color:#6d4c41!important;color:#fff!important}.mdui-color-brown-700{background-color:#5d4037!important;color:#fff!important}.mdui-color-brown-800{background-color:#4e342e!important;color:#fff!important}.mdui-color-brown-900{background-color:#3e2723!important;color:#fff!important}.mdui-color-cyan{background-color:#00bcd4!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-50{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-100{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-200{background-color:#80deea!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-300{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-400{background-color:#26c6da!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-500{background-color:#00bcd4!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-600{background-color:#00acc1!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-700{background-color:#0097a7!important;color:#fff!important}.mdui-color-cyan-800{background-color:#00838f!important;color:#fff!important}.mdui-color-cyan-900{background-color:#006064!important;color:#fff!important}.mdui-color-deep-orange{background-color:#ff5722!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-50{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-100{background-color:#ffccbc!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-200{background-color:#ffab91!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-300{background-color:#ff8a65!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-400{background-color:#ff7043!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-500{background-color:#ff5722!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-600{background-color:#f4511e!important;color:#fff!important}.mdui-color-deep-orange-700{background-color:#e64a19!important;color:#fff!important}.mdui-color-deep-orange-800{background-color:#d84315!important;color:#fff!important}.mdui-color-deep-orange-900{background-color:#bf360c!important;color:#fff!important}.mdui-color-deep-purple{background-color:#673ab7!important;color:#fff!important}.mdui-color-deep-purple-50{background-color:#ede7f6!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-purple-100{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-purple-200{background-color:#b39ddb!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-purple-300{background-color:#9575cd!important;color:#fff!important}.mdui-color-deep-purple-400{background-color:#7e57c2!important;color:#fff!important}.mdui-color-deep-purple-500{background-color:#673ab7!important;color:#fff!important}.mdui-color-deep-purple-600{background-color:#5e35b1!important;color:#fff!important}.mdui-color-deep-purple-700{background-color:#512da8!important;color:#fff!important}.mdui-color-deep-purple-800{background-color:#4527a0!important;color:#fff!important}.mdui-color-deep-purple-900{background-color:#311b92!important;color:#fff!important}.mdui-color-green{background-color:#4caf50!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-50{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-100{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-200{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-300{background-color:#81c784!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-400{background-color:#66bb6a!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-500{background-color:#4caf50!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-600{background-color:#43a047!important;color:#fff!important}.mdui-color-green-700{background-color:#388e3c!important;color:#fff!important}.mdui-color-green-800{background-color:#2e7d32!important;color:#fff!important}.mdui-color-green-900{background-color:#1b5e20!important;color:#fff!important}.mdui-color-grey{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-50{background-color:#fafafa!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-100{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-200{background-color:#eee!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-300{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-400{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-500{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)!important}.mdui-color-grey-600{background-color:#757575!important;color:#fff!important}.mdui-color-grey-700{background-color:#616161!important;color:#fff!important}.mdui-color-grey-800{background-color:#424242!important;color:#fff!important}.mdui-color-grey-900{background-color:#212121!important;color:#fff!important}.mdui-color-indigo{background-color:#3f51b5!important;color:#fff!important}.mdui-color-indigo-50{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)!important}.mdui-color-indigo-100{background-color:#c5cae9!important;color:rgba(0,0,0,.87)!important}.mdui-color-indigo-200{background-color:#9fa8da!important;color:rgba(0,0,0,.87)!important}.mdui-color-indigo-300{background-color:#7986cb!important;color:#fff!important}.mdui-color-indigo-400{background-color:#5c6bc0!important;color:#fff!important}.mdui-color-indigo-500{background-color:#3f51b5!important;color:#fff!important}.mdui-color-indigo-600{background-color:#3949ab!important;color:#fff!important}.mdui-color-indigo-700{background-color:#303f9f!important;color:#fff!important}.mdui-color-indigo-800{background-color:#283593!important;color:#fff!important}.mdui-color-indigo-900{background-color:#1a237e!important;color:#fff!important}.mdui-color-light-blue{background-color:#03a9f4!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-50{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-100{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-200{background-color:#81d4fa!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-300{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-400{background-color:#29b6f6!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-500{background-color:#03a9f4!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-600{background-color:#039be5!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-700{background-color:#0288d1!important;color:#fff!important}.mdui-color-light-blue-800{background-color:#0277bd!important;color:#fff!important}.mdui-color-light-blue-900{background-color:#01579b!important;color:#fff!important}.mdui-color-light-green{background-color:#8bc34a!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-50{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-100{background-color:#dcedc8!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-200{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-300{background-color:#aed581!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-400{background-color:#9ccc65!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-500{background-color:#8bc34a!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-600{background-color:#7cb342!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-700{background-color:#689f38!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-800{background-color:#558b2f!important;color:#fff!important}.mdui-color-light-green-900{background-color:#33691e!important;color:#fff!important}.mdui-color-lime{background-color:#cddc39!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-50{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-100{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-200{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-300{background-color:#dce775!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-400{background-color:#d4e157!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-500{background-color:#cddc39!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-600{background-color:#c0ca33!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-700{background-color:#afb42b!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-800{background-color:#9e9d24!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-900{background-color:#827717!important;color:#fff!important}.mdui-color-orange{background-color:#ff9800!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-50{background-color:#fff3e0!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-100{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-200{background-color:#ffcc80!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-300{background-color:#ffb74d!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-400{background-color:#ffa726!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-500{background-color:#ff9800!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-600{background-color:#fb8c00!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-700{background-color:#f57c00!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-800{background-color:#ef6c00!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-900{background-color:#e65100!important;color:#fff!important}.mdui-color-pink{background-color:#e91e63!important;color:#fff!important}.mdui-color-pink-50{background-color:#fce4ec!important;color:rgba(0,0,0,.87)!important}.mdui-color-pink-100{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)!important}.mdui-color-pink-200{background-color:#f48fb1!important;color:rgba(0,0,0,.87)!important}.mdui-color-pink-300{background-color:#f06292!important;color:rgba(0,0,0,.87)!important}.mdui-color-pink-400{background-color:#ec407a!important;color:#fff!important}.mdui-color-pink-500{background-color:#e91e63!important;color:#fff!important}.mdui-color-pink-600{background-color:#d81b60!important;color:#fff!important}.mdui-color-pink-700{background-color:#c2185b!important;color:#fff!important}.mdui-color-pink-800{background-color:#ad1457!important;color:#fff!important}.mdui-color-pink-900{background-color:#880e4f!important;color:#fff!important}.mdui-color-purple{background-color:#9c27b0!important;color:#fff!important}.mdui-color-purple-50{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)!important}.mdui-color-purple-100{background-color:#e1bee7!important;color:rgba(0,0,0,.87)!important}.mdui-color-purple-200{background-color:#ce93d8!important;color:rgba(0,0,0,.87)!important}.mdui-color-purple-300{background-color:#ba68c8!important;color:#fff!important}.mdui-color-purple-400{background-color:#ab47bc!important;color:#fff!important}.mdui-color-purple-500{background-color:#9c27b0!important;color:#fff!important}.mdui-color-purple-600{background-color:#8e24aa!important;color:#fff!important}.mdui-color-purple-700{background-color:#7b1fa2!important;color:#fff!important}.mdui-color-purple-800{background-color:#6a1b9a!important;color:#fff!important}.mdui-color-purple-900{background-color:#4a148c!important;color:#fff!important}.mdui-color-red{background-color:#f44336!important;color:#fff!important}.mdui-color-red-50{background-color:#ffebee!important;color:rgba(0,0,0,.87)!important}.mdui-color-red-100{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)!important}.mdui-color-red-200{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)!important}.mdui-color-red-300{background-color:#e57373!important;color:rgba(0,0,0,.87)!important}.mdui-color-red-400{background-color:#ef5350!important;color:#fff!important}.mdui-color-red-500{background-color:#f44336!important;color:#fff!important}.mdui-color-red-600{background-color:#e53935!important;color:#fff!important}.mdui-color-red-700{background-color:#d32f2f!important;color:#fff!important}.mdui-color-red-800{background-color:#c62828!important;color:#fff!important}.mdui-color-red-900{background-color:#b71c1c!important;color:#fff!important}.mdui-color-teal{background-color:#009688!important;color:#fff!important}.mdui-color-teal-50{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-100{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-200{background-color:#80cbc4!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-300{background-color:#4db6ac!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-400{background-color:#26a69a!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-500{background-color:#009688!important;color:#fff!important}.mdui-color-teal-600{background-color:#00897b!important;color:#fff!important}.mdui-color-teal-700{background-color:#00796b!important;color:#fff!important}.mdui-color-teal-800{background-color:#00695c!important;color:#fff!important}.mdui-color-teal-900{background-color:#004d40!important;color:#fff!important}.mdui-color-yellow{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-50{background-color:#fffde7!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-100{background-color:#fff9c4!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-200{background-color:#fff59d!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-300{background-color:#fff176!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-400{background-color:#ffee58!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-500{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-600{background-color:#fdd835!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-700{background-color:#fbc02d!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-800{background-color:#f9a825!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-900{background-color:#f57f17!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-accent{background-color:#ffd740!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-a100{background-color:#ffe57f!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-a200{background-color:#ffd740!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-a400{background-color:#ffc400!important;color:rgba(0,0,0,.87)!important}.mdui-color-amber-a700{background-color:#ffab00!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-accent{background-color:#448aff!important;color:#fff!important}.mdui-color-blue-a100{background-color:#82b1ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-blue-a200{background-color:#448aff!important;color:#fff!important}.mdui-color-blue-a400{background-color:#2979ff!important;color:#fff!important}.mdui-color-blue-a700{background-color:#2962ff!important;color:#fff!important}.mdui-color-cyan-accent{background-color:#18ffff!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-a100{background-color:#84ffff!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-a200{background-color:#18ffff!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-a400{background-color:#00e5ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-cyan-a700{background-color:#00b8d4!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-accent{background-color:#ff6e40!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-a100{background-color:#ff9e80!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-a200{background-color:#ff6e40!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-orange-a400{background-color:#ff3d00!important;color:#fff!important}.mdui-color-deep-orange-a700{background-color:#dd2c00!important;color:#fff!important}.mdui-color-deep-purple-accent{background-color:#7c4dff!important;color:#fff!important}.mdui-color-deep-purple-a100{background-color:#b388ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-deep-purple-a200{background-color:#7c4dff!important;color:#fff!important}.mdui-color-deep-purple-a400{background-color:#651fff!important;color:#fff!important}.mdui-color-deep-purple-a700{background-color:#6200ea!important;color:#fff!important}.mdui-color-green-accent{background-color:#69f0ae!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-a100{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-a200{background-color:#69f0ae!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-a400{background-color:#00e676!important;color:rgba(0,0,0,.87)!important}.mdui-color-green-a700{background-color:#00c853!important;color:rgba(0,0,0,.87)!important}.mdui-color-indigo-accent{background-color:#536dfe!important;color:#fff!important}.mdui-color-indigo-a100{background-color:#8c9eff!important;color:rgba(0,0,0,.87)!important}.mdui-color-indigo-a200{background-color:#536dfe!important;color:#fff!important}.mdui-color-indigo-a400{background-color:#3d5afe!important;color:#fff!important}.mdui-color-indigo-a700{background-color:#304ffe!important;color:#fff!important}.mdui-color-light-blue-accent{background-color:#40c4ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-a100{background-color:#80d8ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-a200{background-color:#40c4ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-a400{background-color:#00b0ff!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-blue-a700{background-color:#0091ea!important;color:#fff!important}.mdui-color-light-green-accent{background-color:#b2ff59!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-a100{background-color:#ccff90!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-a200{background-color:#b2ff59!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-a400{background-color:#76ff03!important;color:rgba(0,0,0,.87)!important}.mdui-color-light-green-a700{background-color:#64dd17!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-accent{background-color:#eeff41!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-a100{background-color:#f4ff81!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-a200{background-color:#eeff41!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-a400{background-color:#c6ff00!important;color:rgba(0,0,0,.87)!important}.mdui-color-lime-a700{background-color:#aeea00!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-accent{background-color:#ffab40!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-a100{background-color:#ffd180!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-a200{background-color:#ffab40!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-a400{background-color:#ff9100!important;color:rgba(0,0,0,.87)!important}.mdui-color-orange-a700{background-color:#ff6d00!important;color:rgba(0,0,0,.87)!important}.mdui-color-pink-accent{background-color:#ff4081!important;color:#fff!important}.mdui-color-pink-a100{background-color:#ff80ab!important;color:rgba(0,0,0,.87)!important}.mdui-color-pink-a200{background-color:#ff4081!important;color:#fff!important}.mdui-color-pink-a400{background-color:#f50057!important;color:#fff!important}.mdui-color-pink-a700{background-color:#c51162!important;color:#fff!important}.mdui-color-purple-accent{background-color:#e040fb!important;color:#fff!important}.mdui-color-purple-a100{background-color:#ea80fc!important;color:rgba(0,0,0,.87)!important}.mdui-color-purple-a200{background-color:#e040fb!important;color:#fff!important}.mdui-color-purple-a400{background-color:#d500f9!important;color:#fff!important}.mdui-color-purple-a700{background-color:#a0f!important;color:#fff!important}.mdui-color-red-accent{background-color:#ff5252!important;color:#fff!important}.mdui-color-red-a100{background-color:#ff8a80!important;color:rgba(0,0,0,.87)!important}.mdui-color-red-a200{background-color:#ff5252!important;color:#fff!important}.mdui-color-red-a400{background-color:#ff1744!important;color:#fff!important}.mdui-color-red-a700{background-color:#d50000!important;color:#fff!important}.mdui-color-teal-accent{background-color:#64ffda!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-a100{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-a200{background-color:#64ffda!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-a400{background-color:#1de9b6!important;color:rgba(0,0,0,.87)!important}.mdui-color-teal-a700{background-color:#00bfa5!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-accent{background-color:#ff0!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-a100{background-color:#ffff8d!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-a200{background-color:#ff0!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-a400{background-color:#ffea00!important;color:rgba(0,0,0,.87)!important}.mdui-color-yellow-a700{background-color:#ffd600!important;color:rgba(0,0,0,.87)!important}.mdui-color-black{color:#fff!important;background-color:#000!important}.mdui-color-white{color:rgba(0,0,0,.87)!important;background-color:#fff!important}.mdui-color-transparent{background-color:transparent!important}.mdui-theme-primary-amber .mdui-text-color-theme{color:#ffc107!important}.mdui-theme-primary-amber .mdui-text-color-theme-50{color:#fff8e1!important}.mdui-theme-primary-amber .mdui-text-color-theme-100{color:#ffecb3!important}.mdui-theme-primary-amber .mdui-text-color-theme-200{color:#ffe082!important}.mdui-theme-primary-amber .mdui-text-color-theme-300{color:#ffd54f!important}.mdui-theme-primary-amber .mdui-text-color-theme-400{color:#ffca28!important}.mdui-theme-primary-amber .mdui-text-color-theme-500{color:#ffc107!important}.mdui-theme-primary-amber .mdui-text-color-theme-600{color:#ffb300!important}.mdui-theme-primary-amber .mdui-text-color-theme-700{color:#ffa000!important}.mdui-theme-primary-amber .mdui-text-color-theme-800{color:#ff8f00!important}.mdui-theme-primary-amber .mdui-text-color-theme-900{color:#ff6f00!important}.mdui-theme-primary-blue .mdui-text-color-theme{color:#2196f3!important}.mdui-theme-primary-blue .mdui-text-color-theme-50{color:#e3f2fd!important}.mdui-theme-primary-blue .mdui-text-color-theme-100{color:#bbdefb!important}.mdui-theme-primary-blue .mdui-text-color-theme-200{color:#90caf9!important}.mdui-theme-primary-blue .mdui-text-color-theme-300{color:#64b5f6!important}.mdui-theme-primary-blue .mdui-text-color-theme-400{color:#42a5f5!important}.mdui-theme-primary-blue .mdui-text-color-theme-500{color:#2196f3!important}.mdui-theme-primary-blue .mdui-text-color-theme-600{color:#1e88e5!important}.mdui-theme-primary-blue .mdui-text-color-theme-700{color:#1976d2!important}.mdui-theme-primary-blue .mdui-text-color-theme-800{color:#1565c0!important}.mdui-theme-primary-blue .mdui-text-color-theme-900{color:#0d47a1!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme{color:#607d8b!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-50{color:#eceff1!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-100{color:#cfd8dc!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-200{color:#b0bec5!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-300{color:#90a4ae!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-400{color:#78909c!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-500{color:#607d8b!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-600{color:#546e7a!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-700{color:#455a64!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-800{color:#37474f!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-900{color:#263238!important}.mdui-theme-primary-brown .mdui-text-color-theme{color:#795548!important}.mdui-theme-primary-brown .mdui-text-color-theme-50{color:#efebe9!important}.mdui-theme-primary-brown .mdui-text-color-theme-100{color:#d7ccc8!important}.mdui-theme-primary-brown .mdui-text-color-theme-200{color:#bcaaa4!important}.mdui-theme-primary-brown .mdui-text-color-theme-300{color:#a1887f!important}.mdui-theme-primary-brown .mdui-text-color-theme-400{color:#8d6e63!important}.mdui-theme-primary-brown .mdui-text-color-theme-500{color:#795548!important}.mdui-theme-primary-brown .mdui-text-color-theme-600{color:#6d4c41!important}.mdui-theme-primary-brown .mdui-text-color-theme-700{color:#5d4037!important}.mdui-theme-primary-brown .mdui-text-color-theme-800{color:#4e342e!important}.mdui-theme-primary-brown .mdui-text-color-theme-900{color:#3e2723!important}.mdui-theme-primary-cyan .mdui-text-color-theme{color:#00bcd4!important}.mdui-theme-primary-cyan .mdui-text-color-theme-50{color:#e0f7fa!important}.mdui-theme-primary-cyan .mdui-text-color-theme-100{color:#b2ebf2!important}.mdui-theme-primary-cyan .mdui-text-color-theme-200{color:#80deea!important}.mdui-theme-primary-cyan .mdui-text-color-theme-300{color:#4dd0e1!important}.mdui-theme-primary-cyan .mdui-text-color-theme-400{color:#26c6da!important}.mdui-theme-primary-cyan .mdui-text-color-theme-500{color:#00bcd4!important}.mdui-theme-primary-cyan .mdui-text-color-theme-600{color:#00acc1!important}.mdui-theme-primary-cyan .mdui-text-color-theme-700{color:#0097a7!important}.mdui-theme-primary-cyan .mdui-text-color-theme-800{color:#00838f!important}.mdui-theme-primary-cyan .mdui-text-color-theme-900{color:#006064!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme{color:#ff5722!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-50{color:#fbe9e7!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-100{color:#ffccbc!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-200{color:#ffab91!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-300{color:#ff8a65!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-400{color:#ff7043!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-500{color:#ff5722!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-600{color:#f4511e!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-700{color:#e64a19!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-800{color:#d84315!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-900{color:#bf360c!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme{color:#673ab7!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-50{color:#ede7f6!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-100{color:#d1c4e9!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-200{color:#b39ddb!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-300{color:#9575cd!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-400{color:#7e57c2!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-500{color:#673ab7!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-600{color:#5e35b1!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-700{color:#512da8!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-800{color:#4527a0!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-900{color:#311b92!important}.mdui-theme-primary-green .mdui-text-color-theme{color:#4caf50!important}.mdui-theme-primary-green .mdui-text-color-theme-50{color:#e8f5e9!important}.mdui-theme-primary-green .mdui-text-color-theme-100{color:#c8e6c9!important}.mdui-theme-primary-green .mdui-text-color-theme-200{color:#a5d6a7!important}.mdui-theme-primary-green .mdui-text-color-theme-300{color:#81c784!important}.mdui-theme-primary-green .mdui-text-color-theme-400{color:#66bb6a!important}.mdui-theme-primary-green .mdui-text-color-theme-500{color:#4caf50!important}.mdui-theme-primary-green .mdui-text-color-theme-600{color:#43a047!important}.mdui-theme-primary-green .mdui-text-color-theme-700{color:#388e3c!important}.mdui-theme-primary-green .mdui-text-color-theme-800{color:#2e7d32!important}.mdui-theme-primary-green .mdui-text-color-theme-900{color:#1b5e20!important}.mdui-theme-primary-grey .mdui-text-color-theme{color:#9e9e9e!important}.mdui-theme-primary-grey .mdui-text-color-theme-50{color:#fafafa!important}.mdui-theme-primary-grey .mdui-text-color-theme-100{color:#f5f5f5!important}.mdui-theme-primary-grey .mdui-text-color-theme-200{color:#eee!important}.mdui-theme-primary-grey .mdui-text-color-theme-300{color:#e0e0e0!important}.mdui-theme-primary-grey .mdui-text-color-theme-400{color:#bdbdbd!important}.mdui-theme-primary-grey .mdui-text-color-theme-500{color:#9e9e9e!important}.mdui-theme-primary-grey .mdui-text-color-theme-600{color:#757575!important}.mdui-theme-primary-grey .mdui-text-color-theme-700{color:#616161!important}.mdui-theme-primary-grey .mdui-text-color-theme-800{color:#424242!important}.mdui-theme-primary-grey .mdui-text-color-theme-900{color:#212121!important}.mdui-theme-primary-indigo .mdui-text-color-theme{color:#3f51b5!important}.mdui-theme-primary-indigo .mdui-text-color-theme-50{color:#e8eaf6!important}.mdui-theme-primary-indigo .mdui-text-color-theme-100{color:#c5cae9!important}.mdui-theme-primary-indigo .mdui-text-color-theme-200{color:#9fa8da!important}.mdui-theme-primary-indigo .mdui-text-color-theme-300{color:#7986cb!important}.mdui-theme-primary-indigo .mdui-text-color-theme-400{color:#5c6bc0!important}.mdui-theme-primary-indigo .mdui-text-color-theme-500{color:#3f51b5!important}.mdui-theme-primary-indigo .mdui-text-color-theme-600{color:#3949ab!important}.mdui-theme-primary-indigo .mdui-text-color-theme-700{color:#303f9f!important}.mdui-theme-primary-indigo .mdui-text-color-theme-800{color:#283593!important}.mdui-theme-primary-indigo .mdui-text-color-theme-900{color:#1a237e!important}.mdui-theme-primary-light-blue .mdui-text-color-theme{color:#03a9f4!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-50{color:#e1f5fe!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-100{color:#b3e5fc!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-200{color:#81d4fa!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-300{color:#4fc3f7!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-400{color:#29b6f6!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-500{color:#03a9f4!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-600{color:#039be5!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-700{color:#0288d1!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-800{color:#0277bd!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-900{color:#01579b!important}.mdui-theme-primary-light-green .mdui-text-color-theme{color:#8bc34a!important}.mdui-theme-primary-light-green .mdui-text-color-theme-50{color:#f1f8e9!important}.mdui-theme-primary-light-green .mdui-text-color-theme-100{color:#dcedc8!important}.mdui-theme-primary-light-green .mdui-text-color-theme-200{color:#c5e1a5!important}.mdui-theme-primary-light-green .mdui-text-color-theme-300{color:#aed581!important}.mdui-theme-primary-light-green .mdui-text-color-theme-400{color:#9ccc65!important}.mdui-theme-primary-light-green .mdui-text-color-theme-500{color:#8bc34a!important}.mdui-theme-primary-light-green .mdui-text-color-theme-600{color:#7cb342!important}.mdui-theme-primary-light-green .mdui-text-color-theme-700{color:#689f38!important}.mdui-theme-primary-light-green .mdui-text-color-theme-800{color:#558b2f!important}.mdui-theme-primary-light-green .mdui-text-color-theme-900{color:#33691e!important}.mdui-theme-primary-lime .mdui-text-color-theme{color:#cddc39!important}.mdui-theme-primary-lime .mdui-text-color-theme-50{color:#f9fbe7!important}.mdui-theme-primary-lime .mdui-text-color-theme-100{color:#f0f4c3!important}.mdui-theme-primary-lime .mdui-text-color-theme-200{color:#e6ee9c!important}.mdui-theme-primary-lime .mdui-text-color-theme-300{color:#dce775!important}.mdui-theme-primary-lime .mdui-text-color-theme-400{color:#d4e157!important}.mdui-theme-primary-lime .mdui-text-color-theme-500{color:#cddc39!important}.mdui-theme-primary-lime .mdui-text-color-theme-600{color:#c0ca33!important}.mdui-theme-primary-lime .mdui-text-color-theme-700{color:#afb42b!important}.mdui-theme-primary-lime .mdui-text-color-theme-800{color:#9e9d24!important}.mdui-theme-primary-lime .mdui-text-color-theme-900{color:#827717!important}.mdui-theme-primary-orange .mdui-text-color-theme{color:#ff9800!important}.mdui-theme-primary-orange .mdui-text-color-theme-50{color:#fff3e0!important}.mdui-theme-primary-orange .mdui-text-color-theme-100{color:#ffe0b2!important}.mdui-theme-primary-orange .mdui-text-color-theme-200{color:#ffcc80!important}.mdui-theme-primary-orange .mdui-text-color-theme-300{color:#ffb74d!important}.mdui-theme-primary-orange .mdui-text-color-theme-400{color:#ffa726!important}.mdui-theme-primary-orange .mdui-text-color-theme-500{color:#ff9800!important}.mdui-theme-primary-orange .mdui-text-color-theme-600{color:#fb8c00!important}.mdui-theme-primary-orange .mdui-text-color-theme-700{color:#f57c00!important}.mdui-theme-primary-orange .mdui-text-color-theme-800{color:#ef6c00!important}.mdui-theme-primary-orange .mdui-text-color-theme-900{color:#e65100!important}.mdui-theme-primary-pink .mdui-text-color-theme{color:#e91e63!important}.mdui-theme-primary-pink .mdui-text-color-theme-50{color:#fce4ec!important}.mdui-theme-primary-pink .mdui-text-color-theme-100{color:#f8bbd0!important}.mdui-theme-primary-pink .mdui-text-color-theme-200{color:#f48fb1!important}.mdui-theme-primary-pink .mdui-text-color-theme-300{color:#f06292!important}.mdui-theme-primary-pink .mdui-text-color-theme-400{color:#ec407a!important}.mdui-theme-primary-pink .mdui-text-color-theme-500{color:#e91e63!important}.mdui-theme-primary-pink .mdui-text-color-theme-600{color:#d81b60!important}.mdui-theme-primary-pink .mdui-text-color-theme-700{color:#c2185b!important}.mdui-theme-primary-pink .mdui-text-color-theme-800{color:#ad1457!important}.mdui-theme-primary-pink .mdui-text-color-theme-900{color:#880e4f!important}.mdui-theme-primary-purple .mdui-text-color-theme{color:#9c27b0!important}.mdui-theme-primary-purple .mdui-text-color-theme-50{color:#f3e5f5!important}.mdui-theme-primary-purple .mdui-text-color-theme-100{color:#e1bee7!important}.mdui-theme-primary-purple .mdui-text-color-theme-200{color:#ce93d8!important}.mdui-theme-primary-purple .mdui-text-color-theme-300{color:#ba68c8!important}.mdui-theme-primary-purple .mdui-text-color-theme-400{color:#ab47bc!important}.mdui-theme-primary-purple .mdui-text-color-theme-500{color:#9c27b0!important}.mdui-theme-primary-purple .mdui-text-color-theme-600{color:#8e24aa!important}.mdui-theme-primary-purple .mdui-text-color-theme-700{color:#7b1fa2!important}.mdui-theme-primary-purple .mdui-text-color-theme-800{color:#6a1b9a!important}.mdui-theme-primary-purple .mdui-text-color-theme-900{color:#4a148c!important}.mdui-theme-primary-red .mdui-text-color-theme{color:#f44336!important}.mdui-theme-primary-red .mdui-text-color-theme-50{color:#ffebee!important}.mdui-theme-primary-red .mdui-text-color-theme-100{color:#ffcdd2!important}.mdui-theme-primary-red .mdui-text-color-theme-200{color:#ef9a9a!important}.mdui-theme-primary-red .mdui-text-color-theme-300{color:#e57373!important}.mdui-theme-primary-red .mdui-text-color-theme-400{color:#ef5350!important}.mdui-theme-primary-red .mdui-text-color-theme-500{color:#f44336!important}.mdui-theme-primary-red .mdui-text-color-theme-600{color:#e53935!important}.mdui-theme-primary-red .mdui-text-color-theme-700{color:#d32f2f!important}.mdui-theme-primary-red .mdui-text-color-theme-800{color:#c62828!important}.mdui-theme-primary-red .mdui-text-color-theme-900{color:#b71c1c!important}.mdui-theme-primary-teal .mdui-text-color-theme{color:#009688!important}.mdui-theme-primary-teal .mdui-text-color-theme-50{color:#e0f2f1!important}.mdui-theme-primary-teal .mdui-text-color-theme-100{color:#b2dfdb!important}.mdui-theme-primary-teal .mdui-text-color-theme-200{color:#80cbc4!important}.mdui-theme-primary-teal .mdui-text-color-theme-300{color:#4db6ac!important}.mdui-theme-primary-teal .mdui-text-color-theme-400{color:#26a69a!important}.mdui-theme-primary-teal .mdui-text-color-theme-500{color:#009688!important}.mdui-theme-primary-teal .mdui-text-color-theme-600{color:#00897b!important}.mdui-theme-primary-teal .mdui-text-color-theme-700{color:#00796b!important}.mdui-theme-primary-teal .mdui-text-color-theme-800{color:#00695c!important}.mdui-theme-primary-teal .mdui-text-color-theme-900{color:#004d40!important}.mdui-theme-primary-yellow .mdui-text-color-theme{color:#ffeb3b!important}.mdui-theme-primary-yellow .mdui-text-color-theme-50{color:#fffde7!important}.mdui-theme-primary-yellow .mdui-text-color-theme-100{color:#fff9c4!important}.mdui-theme-primary-yellow .mdui-text-color-theme-200{color:#fff59d!important}.mdui-theme-primary-yellow .mdui-text-color-theme-300{color:#fff176!important}.mdui-theme-primary-yellow .mdui-text-color-theme-400{color:#ffee58!important}.mdui-theme-primary-yellow .mdui-text-color-theme-500{color:#ffeb3b!important}.mdui-theme-primary-yellow .mdui-text-color-theme-600{color:#fdd835!important}.mdui-theme-primary-yellow .mdui-text-color-theme-700{color:#fbc02d!important}.mdui-theme-primary-yellow .mdui-text-color-theme-800{color:#f9a825!important}.mdui-theme-primary-yellow .mdui-text-color-theme-900{color:#f57f17!important}.mdui-theme-accent-amber .mdui-text-color-theme-accent{color:#ffd740!important}.mdui-theme-accent-amber .mdui-text-color-theme-a100{color:#ffe57f!important}.mdui-theme-accent-amber .mdui-text-color-theme-a200{color:#ffd740!important}.mdui-theme-accent-amber .mdui-text-color-theme-a400{color:#ffc400!important}.mdui-theme-accent-amber .mdui-text-color-theme-a700{color:#ffab00!important}.mdui-theme-accent-blue .mdui-text-color-theme-accent{color:#448aff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a100{color:#82b1ff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a200{color:#448aff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a400{color:#2979ff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a700{color:#2962ff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-accent{color:#18ffff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a100{color:#84ffff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a200{color:#18ffff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a400{color:#00e5ff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a700{color:#00b8d4!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-accent{color:#ff6e40!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a100{color:#ff9e80!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a200{color:#ff6e40!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a400{color:#ff3d00!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a700{color:#dd2c00!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-accent{color:#7c4dff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a100{color:#b388ff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a200{color:#7c4dff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a400{color:#651fff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a700{color:#6200ea!important}.mdui-theme-accent-green .mdui-text-color-theme-accent{color:#69f0ae!important}.mdui-theme-accent-green .mdui-text-color-theme-a100{color:#b9f6ca!important}.mdui-theme-accent-green .mdui-text-color-theme-a200{color:#69f0ae!important}.mdui-theme-accent-green .mdui-text-color-theme-a400{color:#00e676!important}.mdui-theme-accent-green .mdui-text-color-theme-a700{color:#00c853!important}.mdui-theme-accent-indigo .mdui-text-color-theme-accent{color:#536dfe!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a100{color:#8c9eff!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a200{color:#536dfe!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a400{color:#3d5afe!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a700{color:#304ffe!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-accent{color:#40c4ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a100{color:#80d8ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a200{color:#40c4ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a400{color:#00b0ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a700{color:#0091ea!important}.mdui-theme-accent-light-green .mdui-text-color-theme-accent{color:#b2ff59!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a100{color:#ccff90!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a200{color:#b2ff59!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a400{color:#76ff03!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a700{color:#64dd17!important}.mdui-theme-accent-lime .mdui-text-color-theme-accent{color:#eeff41!important}.mdui-theme-accent-lime .mdui-text-color-theme-a100{color:#f4ff81!important}.mdui-theme-accent-lime .mdui-text-color-theme-a200{color:#eeff41!important}.mdui-theme-accent-lime .mdui-text-color-theme-a400{color:#c6ff00!important}.mdui-theme-accent-lime .mdui-text-color-theme-a700{color:#aeea00!important}.mdui-theme-accent-orange .mdui-text-color-theme-accent{color:#ffab40!important}.mdui-theme-accent-orange .mdui-text-color-theme-a100{color:#ffd180!important}.mdui-theme-accent-orange .mdui-text-color-theme-a200{color:#ffab40!important}.mdui-theme-accent-orange .mdui-text-color-theme-a400{color:#ff9100!important}.mdui-theme-accent-orange .mdui-text-color-theme-a700{color:#ff6d00!important}.mdui-theme-accent-pink .mdui-text-color-theme-accent{color:#ff4081!important}.mdui-theme-accent-pink .mdui-text-color-theme-a100{color:#ff80ab!important}.mdui-theme-accent-pink .mdui-text-color-theme-a200{color:#ff4081!important}.mdui-theme-accent-pink .mdui-text-color-theme-a400{color:#f50057!important}.mdui-theme-accent-pink .mdui-text-color-theme-a700{color:#c51162!important}.mdui-theme-accent-purple .mdui-text-color-theme-accent{color:#e040fb!important}.mdui-theme-accent-purple .mdui-text-color-theme-a100{color:#ea80fc!important}.mdui-theme-accent-purple .mdui-text-color-theme-a200{color:#e040fb!important}.mdui-theme-accent-purple .mdui-text-color-theme-a400{color:#d500f9!important}.mdui-theme-accent-purple .mdui-text-color-theme-a700{color:#a0f!important}.mdui-theme-accent-red .mdui-text-color-theme-accent{color:#ff5252!important}.mdui-theme-accent-red .mdui-text-color-theme-a100{color:#ff8a80!important}.mdui-theme-accent-red .mdui-text-color-theme-a200{color:#ff5252!important}.mdui-theme-accent-red .mdui-text-color-theme-a400{color:#ff1744!important}.mdui-theme-accent-red .mdui-text-color-theme-a700{color:#d50000!important}.mdui-theme-accent-teal .mdui-text-color-theme-accent{color:#64ffda!important}.mdui-theme-accent-teal .mdui-text-color-theme-a100{color:#a7ffeb!important}.mdui-theme-accent-teal .mdui-text-color-theme-a200{color:#64ffda!important}.mdui-theme-accent-teal .mdui-text-color-theme-a400{color:#1de9b6!important}.mdui-theme-accent-teal .mdui-text-color-theme-a700{color:#00bfa5!important}.mdui-theme-accent-yellow .mdui-text-color-theme-accent{color:#ff0!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a100{color:#ffff8d!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a200{color:#ff0!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a400{color:#ffea00!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a700{color:#ffd600!important}.mdui-text-color-amber{color:#ffc107!important}.mdui-text-color-amber-50{color:#fff8e1!important}.mdui-text-color-amber-100{color:#ffecb3!important}.mdui-text-color-amber-200{color:#ffe082!important}.mdui-text-color-amber-300{color:#ffd54f!important}.mdui-text-color-amber-400{color:#ffca28!important}.mdui-text-color-amber-500{color:#ffc107!important}.mdui-text-color-amber-600{color:#ffb300!important}.mdui-text-color-amber-700{color:#ffa000!important}.mdui-text-color-amber-800{color:#ff8f00!important}.mdui-text-color-amber-900{color:#ff6f00!important}.mdui-text-color-blue{color:#2196f3!important}.mdui-text-color-blue-50{color:#e3f2fd!important}.mdui-text-color-blue-100{color:#bbdefb!important}.mdui-text-color-blue-200{color:#90caf9!important}.mdui-text-color-blue-300{color:#64b5f6!important}.mdui-text-color-blue-400{color:#42a5f5!important}.mdui-text-color-blue-500{color:#2196f3!important}.mdui-text-color-blue-600{color:#1e88e5!important}.mdui-text-color-blue-700{color:#1976d2!important}.mdui-text-color-blue-800{color:#1565c0!important}.mdui-text-color-blue-900{color:#0d47a1!important}.mdui-text-color-blue-grey{color:#607d8b!important}.mdui-text-color-blue-grey-50{color:#eceff1!important}.mdui-text-color-blue-grey-100{color:#cfd8dc!important}.mdui-text-color-blue-grey-200{color:#b0bec5!important}.mdui-text-color-blue-grey-300{color:#90a4ae!important}.mdui-text-color-blue-grey-400{color:#78909c!important}.mdui-text-color-blue-grey-500{color:#607d8b!important}.mdui-text-color-blue-grey-600{color:#546e7a!important}.mdui-text-color-blue-grey-700{color:#455a64!important}.mdui-text-color-blue-grey-800{color:#37474f!important}.mdui-text-color-blue-grey-900{color:#263238!important}.mdui-text-color-brown{color:#795548!important}.mdui-text-color-brown-50{color:#efebe9!important}.mdui-text-color-brown-100{color:#d7ccc8!important}.mdui-text-color-brown-200{color:#bcaaa4!important}.mdui-text-color-brown-300{color:#a1887f!important}.mdui-text-color-brown-400{color:#8d6e63!important}.mdui-text-color-brown-500{color:#795548!important}.mdui-text-color-brown-600{color:#6d4c41!important}.mdui-text-color-brown-700{color:#5d4037!important}.mdui-text-color-brown-800{color:#4e342e!important}.mdui-text-color-brown-900{color:#3e2723!important}.mdui-text-color-cyan{color:#00bcd4!important}.mdui-text-color-cyan-50{color:#e0f7fa!important}.mdui-text-color-cyan-100{color:#b2ebf2!important}.mdui-text-color-cyan-200{color:#80deea!important}.mdui-text-color-cyan-300{color:#4dd0e1!important}.mdui-text-color-cyan-400{color:#26c6da!important}.mdui-text-color-cyan-500{color:#00bcd4!important}.mdui-text-color-cyan-600{color:#00acc1!important}.mdui-text-color-cyan-700{color:#0097a7!important}.mdui-text-color-cyan-800{color:#00838f!important}.mdui-text-color-cyan-900{color:#006064!important}.mdui-text-color-deep-orange{color:#ff5722!important}.mdui-text-color-deep-orange-50{color:#fbe9e7!important}.mdui-text-color-deep-orange-100{color:#ffccbc!important}.mdui-text-color-deep-orange-200{color:#ffab91!important}.mdui-text-color-deep-orange-300{color:#ff8a65!important}.mdui-text-color-deep-orange-400{color:#ff7043!important}.mdui-text-color-deep-orange-500{color:#ff5722!important}.mdui-text-color-deep-orange-600{color:#f4511e!important}.mdui-text-color-deep-orange-700{color:#e64a19!important}.mdui-text-color-deep-orange-800{color:#d84315!important}.mdui-text-color-deep-orange-900{color:#bf360c!important}.mdui-text-color-deep-purple{color:#673ab7!important}.mdui-text-color-deep-purple-50{color:#ede7f6!important}.mdui-text-color-deep-purple-100{color:#d1c4e9!important}.mdui-text-color-deep-purple-200{color:#b39ddb!important}.mdui-text-color-deep-purple-300{color:#9575cd!important}.mdui-text-color-deep-purple-400{color:#7e57c2!important}.mdui-text-color-deep-purple-500{color:#673ab7!important}.mdui-text-color-deep-purple-600{color:#5e35b1!important}.mdui-text-color-deep-purple-700{color:#512da8!important}.mdui-text-color-deep-purple-800{color:#4527a0!important}.mdui-text-color-deep-purple-900{color:#311b92!important}.mdui-text-color-green{color:#4caf50!important}.mdui-text-color-green-50{color:#e8f5e9!important}.mdui-text-color-green-100{color:#c8e6c9!important}.mdui-text-color-green-200{color:#a5d6a7!important}.mdui-text-color-green-300{color:#81c784!important}.mdui-text-color-green-400{color:#66bb6a!important}.mdui-text-color-green-500{color:#4caf50!important}.mdui-text-color-green-600{color:#43a047!important}.mdui-text-color-green-700{color:#388e3c!important}.mdui-text-color-green-800{color:#2e7d32!important}.mdui-text-color-green-900{color:#1b5e20!important}.mdui-text-color-grey{color:#9e9e9e!important}.mdui-text-color-grey-50{color:#fafafa!important}.mdui-text-color-grey-100{color:#f5f5f5!important}.mdui-text-color-grey-200{color:#eee!important}.mdui-text-color-grey-300{color:#e0e0e0!important}.mdui-text-color-grey-400{color:#bdbdbd!important}.mdui-text-color-grey-500{color:#9e9e9e!important}.mdui-text-color-grey-600{color:#757575!important}.mdui-text-color-grey-700{color:#616161!important}.mdui-text-color-grey-800{color:#424242!important}.mdui-text-color-grey-900{color:#212121!important}.mdui-text-color-indigo{color:#3f51b5!important}.mdui-text-color-indigo-50{color:#e8eaf6!important}.mdui-text-color-indigo-100{color:#c5cae9!important}.mdui-text-color-indigo-200{color:#9fa8da!important}.mdui-text-color-indigo-300{color:#7986cb!important}.mdui-text-color-indigo-400{color:#5c6bc0!important}.mdui-text-color-indigo-500{color:#3f51b5!important}.mdui-text-color-indigo-600{color:#3949ab!important}.mdui-text-color-indigo-700{color:#303f9f!important}.mdui-text-color-indigo-800{color:#283593!important}.mdui-text-color-indigo-900{color:#1a237e!important}.mdui-text-color-light-blue{color:#03a9f4!important}.mdui-text-color-light-blue-50{color:#e1f5fe!important}.mdui-text-color-light-blue-100{color:#b3e5fc!important}.mdui-text-color-light-blue-200{color:#81d4fa!important}.mdui-text-color-light-blue-300{color:#4fc3f7!important}.mdui-text-color-light-blue-400{color:#29b6f6!important}.mdui-text-color-light-blue-500{color:#03a9f4!important}.mdui-text-color-light-blue-600{color:#039be5!important}.mdui-text-color-light-blue-700{color:#0288d1!important}.mdui-text-color-light-blue-800{color:#0277bd!important}.mdui-text-color-light-blue-900{color:#01579b!important}.mdui-text-color-light-green{color:#8bc34a!important}.mdui-text-color-light-green-50{color:#f1f8e9!important}.mdui-text-color-light-green-100{color:#dcedc8!important}.mdui-text-color-light-green-200{color:#c5e1a5!important}.mdui-text-color-light-green-300{color:#aed581!important}.mdui-text-color-light-green-400{color:#9ccc65!important}.mdui-text-color-light-green-500{color:#8bc34a!important}.mdui-text-color-light-green-600{color:#7cb342!important}.mdui-text-color-light-green-700{color:#689f38!important}.mdui-text-color-light-green-800{color:#558b2f!important}.mdui-text-color-light-green-900{color:#33691e!important}.mdui-text-color-lime{color:#cddc39!important}.mdui-text-color-lime-50{color:#f9fbe7!important}.mdui-text-color-lime-100{color:#f0f4c3!important}.mdui-text-color-lime-200{color:#e6ee9c!important}.mdui-text-color-lime-300{color:#dce775!important}.mdui-text-color-lime-400{color:#d4e157!important}.mdui-text-color-lime-500{color:#cddc39!important}.mdui-text-color-lime-600{color:#c0ca33!important}.mdui-text-color-lime-700{color:#afb42b!important}.mdui-text-color-lime-800{color:#9e9d24!important}.mdui-text-color-lime-900{color:#827717!important}.mdui-text-color-orange{color:#ff9800!important}.mdui-text-color-orange-50{color:#fff3e0!important}.mdui-text-color-orange-100{color:#ffe0b2!important}.mdui-text-color-orange-200{color:#ffcc80!important}.mdui-text-color-orange-300{color:#ffb74d!important}.mdui-text-color-orange-400{color:#ffa726!important}.mdui-text-color-orange-500{color:#ff9800!important}.mdui-text-color-orange-600{color:#fb8c00!important}.mdui-text-color-orange-700{color:#f57c00!important}.mdui-text-color-orange-800{color:#ef6c00!important}.mdui-text-color-orange-900{color:#e65100!important}.mdui-text-color-pink{color:#e91e63!important}.mdui-text-color-pink-50{color:#fce4ec!important}.mdui-text-color-pink-100{color:#f8bbd0!important}.mdui-text-color-pink-200{color:#f48fb1!important}.mdui-text-color-pink-300{color:#f06292!important}.mdui-text-color-pink-400{color:#ec407a!important}.mdui-text-color-pink-500{color:#e91e63!important}.mdui-text-color-pink-600{color:#d81b60!important}.mdui-text-color-pink-700{color:#c2185b!important}.mdui-text-color-pink-800{color:#ad1457!important}.mdui-text-color-pink-900{color:#880e4f!important}.mdui-text-color-purple{color:#9c27b0!important}.mdui-text-color-purple-50{color:#f3e5f5!important}.mdui-text-color-purple-100{color:#e1bee7!important}.mdui-text-color-purple-200{color:#ce93d8!important}.mdui-text-color-purple-300{color:#ba68c8!important}.mdui-text-color-purple-400{color:#ab47bc!important}.mdui-text-color-purple-500{color:#9c27b0!important}.mdui-text-color-purple-600{color:#8e24aa!important}.mdui-text-color-purple-700{color:#7b1fa2!important}.mdui-text-color-purple-800{color:#6a1b9a!important}.mdui-text-color-purple-900{color:#4a148c!important}.mdui-text-color-red{color:#f44336!important}.mdui-text-color-red-50{color:#ffebee!important}.mdui-text-color-red-100{color:#ffcdd2!important}.mdui-text-color-red-200{color:#ef9a9a!important}.mdui-text-color-red-300{color:#e57373!important}.mdui-text-color-red-400{color:#ef5350!important}.mdui-text-color-red-500{color:#f44336!important}.mdui-text-color-red-600{color:#e53935!important}.mdui-text-color-red-700{color:#d32f2f!important}.mdui-text-color-red-800{color:#c62828!important}.mdui-text-color-red-900{color:#b71c1c!important}.mdui-text-color-teal{color:#009688!important}.mdui-text-color-teal-50{color:#e0f2f1!important}.mdui-text-color-teal-100{color:#b2dfdb!important}.mdui-text-color-teal-200{color:#80cbc4!important}.mdui-text-color-teal-300{color:#4db6ac!important}.mdui-text-color-teal-400{color:#26a69a!important}.mdui-text-color-teal-500{color:#009688!important}.mdui-text-color-teal-600{color:#00897b!important}.mdui-text-color-teal-700{color:#00796b!important}.mdui-text-color-teal-800{color:#00695c!important}.mdui-text-color-teal-900{color:#004d40!important}.mdui-text-color-yellow{color:#ffeb3b!important}.mdui-text-color-yellow-50{color:#fffde7!important}.mdui-text-color-yellow-100{color:#fff9c4!important}.mdui-text-color-yellow-200{color:#fff59d!important}.mdui-text-color-yellow-300{color:#fff176!important}.mdui-text-color-yellow-400{color:#ffee58!important}.mdui-text-color-yellow-500{color:#ffeb3b!important}.mdui-text-color-yellow-600{color:#fdd835!important}.mdui-text-color-yellow-700{color:#fbc02d!important}.mdui-text-color-yellow-800{color:#f9a825!important}.mdui-text-color-yellow-900{color:#f57f17!important}.mdui-text-color-amber-accent{color:#ffd740!important}.mdui-text-color-amber-a100{color:#ffe57f!important}.mdui-text-color-amber-a200{color:#ffd740!important}.mdui-text-color-amber-a400{color:#ffc400!important}.mdui-text-color-amber-a700{color:#ffab00!important}.mdui-text-color-blue-accent{color:#448aff!important}.mdui-text-color-blue-a100{color:#82b1ff!important}.mdui-text-color-blue-a200{color:#448aff!important}.mdui-text-color-blue-a400{color:#2979ff!important}.mdui-text-color-blue-a700{color:#2962ff!important}.mdui-text-color-cyan-accent{color:#18ffff!important}.mdui-text-color-cyan-a100{color:#84ffff!important}.mdui-text-color-cyan-a200{color:#18ffff!important}.mdui-text-color-cyan-a400{color:#00e5ff!important}.mdui-text-color-cyan-a700{color:#00b8d4!important}.mdui-text-color-deep-orange-accent{color:#ff6e40!important}.mdui-text-color-deep-orange-a100{color:#ff9e80!important}.mdui-text-color-deep-orange-a200{color:#ff6e40!important}.mdui-text-color-deep-orange-a400{color:#ff3d00!important}.mdui-text-color-deep-orange-a700{color:#dd2c00!important}.mdui-text-color-deep-purple-accent{color:#7c4dff!important}.mdui-text-color-deep-purple-a100{color:#b388ff!important}.mdui-text-color-deep-purple-a200{color:#7c4dff!important}.mdui-text-color-deep-purple-a400{color:#651fff!important}.mdui-text-color-deep-purple-a700{color:#6200ea!important}.mdui-text-color-green-accent{color:#69f0ae!important}.mdui-text-color-green-a100{color:#b9f6ca!important}.mdui-text-color-green-a200{color:#69f0ae!important}.mdui-text-color-green-a400{color:#00e676!important}.mdui-text-color-green-a700{color:#00c853!important}.mdui-text-color-indigo-accent{color:#536dfe!important}.mdui-text-color-indigo-a100{color:#8c9eff!important}.mdui-text-color-indigo-a200{color:#536dfe!important}.mdui-text-color-indigo-a400{color:#3d5afe!important}.mdui-text-color-indigo-a700{color:#304ffe!important}.mdui-text-color-light-blue-accent{color:#40c4ff!important}.mdui-text-color-light-blue-a100{color:#80d8ff!important}.mdui-text-color-light-blue-a200{color:#40c4ff!important}.mdui-text-color-light-blue-a400{color:#00b0ff!important}.mdui-text-color-light-blue-a700{color:#0091ea!important}.mdui-text-color-light-green-accent{color:#b2ff59!important}.mdui-text-color-light-green-a100{color:#ccff90!important}.mdui-text-color-light-green-a200{color:#b2ff59!important}.mdui-text-color-light-green-a400{color:#76ff03!important}.mdui-text-color-light-green-a700{color:#64dd17!important}.mdui-text-color-lime-accent{color:#eeff41!important}.mdui-text-color-lime-a100{color:#f4ff81!important}.mdui-text-color-lime-a200{color:#eeff41!important}.mdui-text-color-lime-a400{color:#c6ff00!important}.mdui-text-color-lime-a700{color:#aeea00!important}.mdui-text-color-orange-accent{color:#ffab40!important}.mdui-text-color-orange-a100{color:#ffd180!important}.mdui-text-color-orange-a200{color:#ffab40!important}.mdui-text-color-orange-a400{color:#ff9100!important}.mdui-text-color-orange-a700{color:#ff6d00!important}.mdui-text-color-pink-accent{color:#ff4081!important}.mdui-text-color-pink-a100{color:#ff80ab!important}.mdui-text-color-pink-a200{color:#ff4081!important}.mdui-text-color-pink-a400{color:#f50057!important}.mdui-text-color-pink-a700{color:#c51162!important}.mdui-text-color-purple-accent{color:#e040fb!important}.mdui-text-color-purple-a100{color:#ea80fc!important}.mdui-text-color-purple-a200{color:#e040fb!important}.mdui-text-color-purple-a400{color:#d500f9!important}.mdui-text-color-purple-a700{color:#a0f!important}.mdui-text-color-red-accent{color:#ff5252!important}.mdui-text-color-red-a100{color:#ff8a80!important}.mdui-text-color-red-a200{color:#ff5252!important}.mdui-text-color-red-a400{color:#ff1744!important}.mdui-text-color-red-a700{color:#d50000!important}.mdui-text-color-teal-accent{color:#64ffda!important}.mdui-text-color-teal-a100{color:#a7ffeb!important}.mdui-text-color-teal-a200{color:#64ffda!important}.mdui-text-color-teal-a400{color:#1de9b6!important}.mdui-text-color-teal-a700{color:#00bfa5!important}.mdui-text-color-yellow-accent{color:#ff0!important}.mdui-text-color-yellow-a100{color:#ffff8d!important}.mdui-text-color-yellow-a200{color:#ff0!important}.mdui-text-color-yellow-a400{color:#ffea00!important}.mdui-text-color-yellow-a700{color:#ffd600!important}.mdui-text-color-black{color:#000!important}.mdui-text-color-black-text,.mdui-text-color-theme-text{color:rgba(0,0,0,.87)!important}.mdui-text-color-black-secondary,.mdui-text-color-theme-secondary{color:rgba(0,0,0,.54)!important}.mdui-text-color-black-disabled,.mdui-text-color-theme-disabled{color:rgba(0,0,0,.38)!important}.mdui-text-color-black-divider,.mdui-text-color-theme-divider{color:rgba(0,0,0,.12)!important}.mdui-text-color-black-icon,.mdui-text-color-theme-icon{color:rgba(0,0,0,.54)!important}.mdui-text-color-black-icon-disabled,.mdui-text-color-theme-icon-disabled{color:rgba(0,0,0,.26)!important}.mdui-text-color-white{color:#fff!important}.mdui-text-color-white-text{color:#fff!important}.mdui-text-color-white-secondary{color:rgba(255,255,255,.7)!important}.mdui-text-color-white-disabled{color:rgba(255,255,255,.5)!important}.mdui-text-color-white-divider{color:rgba(255,255,255,.12)!important}.mdui-text-color-white-icon{color:#fff!important}.mdui-text-color-white-icon-disabled{color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-text-color-theme-text{color:#fff!important}.mdui-theme-layout-dark .mdui-text-color-theme-secondary{color:rgba(255,255,255,.7)!important}.mdui-theme-layout-dark .mdui-text-color-theme-disabled{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-dark .mdui-text-color-theme-divider{color:rgba(255,255,255,.12)!important}.mdui-theme-layout-dark .mdui-text-color-theme-icon{color:#fff!important}.mdui-theme-layout-dark .mdui-text-color-theme-icon-disabled{color:rgba(255,255,255,.3)!important}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-text-color-theme-text{color:#fff!important}.mdui-theme-layout-auto .mdui-text-color-theme-secondary{color:rgba(255,255,255,.7)!important}.mdui-theme-layout-auto .mdui-text-color-theme-disabled{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-auto .mdui-text-color-theme-divider{color:rgba(255,255,255,.12)!important}.mdui-theme-layout-auto .mdui-text-color-theme-icon{color:#fff!important}.mdui-theme-layout-auto .mdui-text-color-theme-icon-disabled{color:rgba(255,255,255,.3)!important}}.mdui-m-a-0{margin:0!important}.mdui-m-t-0{margin-top:0!important}.mdui-m-r-0{margin-right:0!important}.mdui-m-b-0{margin-bottom:0!important}.mdui-m-l-0{margin-left:0!important}.mdui-m-x-0{margin-right:0!important;margin-left:0!important}.mdui-m-y-0{margin-top:0!important;margin-bottom:0!important}.mdui-p-a-0{padding:0!important}.mdui-p-t-0{padding-top:0!important}.mdui-p-r-0{padding-right:0!important}.mdui-p-b-0{padding-bottom:0!important}.mdui-p-l-0{padding-left:0!important}.mdui-p-x-0{padding-right:0!important;padding-left:0!important}.mdui-p-y-0{padding-top:0!important;padding-bottom:0!important}.mdui-m-a-1{margin:8px!important}.mdui-m-t-1{margin-top:8px!important}.mdui-m-r-1{margin-right:8px!important}.mdui-m-b-1{margin-bottom:8px!important}.mdui-m-l-1{margin-left:8px!important}.mdui-m-x-1{margin-right:8px!important;margin-left:8px!important}.mdui-m-y-1{margin-top:8px!important;margin-bottom:8px!important}.mdui-p-a-1{padding:8px!important}.mdui-p-t-1{padding-top:8px!important}.mdui-p-r-1{padding-right:8px!important}.mdui-p-b-1{padding-bottom:8px!important}.mdui-p-l-1{padding-left:8px!important}.mdui-p-x-1{padding-right:8px!important;padding-left:8px!important}.mdui-p-y-1{padding-top:8px!important;padding-bottom:8px!important}.mdui-m-a-2{margin:16px!important}.mdui-m-t-2{margin-top:16px!important}.mdui-m-r-2{margin-right:16px!important}.mdui-m-b-2{margin-bottom:16px!important}.mdui-m-l-2{margin-left:16px!important}.mdui-m-x-2{margin-right:16px!important;margin-left:16px!important}.mdui-m-y-2{margin-top:16px!important;margin-bottom:16px!important}.mdui-p-a-2{padding:16px!important}.mdui-p-t-2{padding-top:16px!important}.mdui-p-r-2{padding-right:16px!important}.mdui-p-b-2{padding-bottom:16px!important}.mdui-p-l-2{padding-left:16px!important}.mdui-p-x-2{padding-right:16px!important;padding-left:16px!important}.mdui-p-y-2{padding-top:16px!important;padding-bottom:16px!important}.mdui-m-a-3{margin:24px!important}.mdui-m-t-3{margin-top:24px!important}.mdui-m-r-3{margin-right:24px!important}.mdui-m-b-3{margin-bottom:24px!important}.mdui-m-l-3{margin-left:24px!important}.mdui-m-x-3{margin-right:24px!important;margin-left:24px!important}.mdui-m-y-3{margin-top:24px!important;margin-bottom:24px!important}.mdui-p-a-3{padding:24px!important}.mdui-p-t-3{padding-top:24px!important}.mdui-p-r-3{padding-right:24px!important}.mdui-p-b-3{padding-bottom:24px!important}.mdui-p-l-3{padding-left:24px!important}.mdui-p-x-3{padding-right:24px!important;padding-left:24px!important}.mdui-p-y-3{padding-top:24px!important;padding-bottom:24px!important}.mdui-m-a-4{margin:32px!important}.mdui-m-t-4{margin-top:32px!important}.mdui-m-r-4{margin-right:32px!important}.mdui-m-b-4{margin-bottom:32px!important}.mdui-m-l-4{margin-left:32px!important}.mdui-m-x-4{margin-right:32px!important;margin-left:32px!important}.mdui-m-y-4{margin-top:32px!important;margin-bottom:32px!important}.mdui-p-a-4{padding:32px!important}.mdui-p-t-4{padding-top:32px!important}.mdui-p-r-4{padding-right:32px!important}.mdui-p-b-4{padding-bottom:32px!important}.mdui-p-l-4{padding-left:32px!important}.mdui-p-x-4{padding-right:32px!important;padding-left:32px!important}.mdui-p-y-4{padding-top:32px!important;padding-bottom:32px!important}.mdui-m-a-5{margin:40px!important}.mdui-m-t-5{margin-top:40px!important}.mdui-m-r-5{margin-right:40px!important}.mdui-m-b-5{margin-bottom:40px!important}.mdui-m-l-5{margin-left:40px!important}.mdui-m-x-5{margin-right:40px!important;margin-left:40px!important}.mdui-m-y-5{margin-top:40px!important;margin-bottom:40px!important}.mdui-p-a-5{padding:40px!important}.mdui-p-t-5{padding-top:40px!important}.mdui-p-r-5{padding-right:40px!important}.mdui-p-b-5{padding-bottom:40px!important}.mdui-p-l-5{padding-left:40px!important}.mdui-p-x-5{padding-right:40px!important;padding-left:40px!important}.mdui-p-y-5{padding-top:40px!important;padding-bottom:40px!important}.mdui-float-left{float:left!important}.mdui-float-right{float:right!important}.mdui-center{display:block!important;margin-right:auto!important;margin-left:auto!important}.mdui-valign{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.mdui-text-left{text-align:left!important}.mdui-text-center{text-align:center!important}.mdui-text-right{text-align:right!important}.mdui-text-lowercase{text-transform:lowercase!important}.mdui-text-uppercase{text-transform:uppercase!important}.mdui-text-capitalize{text-transform:capitalize!important}.mdui-text-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-clearfix::after,.mdui-clearfix::before{display:table;content:' '}.mdui-clearfix::after{clear:both}.mdui-hidden,[hidden]{display:none!important}.mdui-invisible{visibility:hidden}@media (max-width:599px){.mdui-hidden-xs{display:none!important}}@media (min-width:600px) and (max-width:1023px){.mdui-hidden-sm{display:none!important}}@media (min-width:1024px) and (max-width:1439px){.mdui-hidden-md{display:none!important}}@media (min-width:1440px) and (max-width:1919px){.mdui-hidden-lg{display:none!important}}@media (min-width:1920px){.mdui-hidden-xl{display:none!important}}@media (max-width:599px){.mdui-hidden-xs-down{display:none!important}}@media (max-width:1023px){.mdui-hidden-sm-down{display:none!important}}@media (max-width:1439px){.mdui-hidden-md-down{display:none!important}}@media (max-width:1919px){.mdui-hidden-lg-down{display:none!important}}.mdui-hidden-xl-down{display:none!important}.mdui-hidden-xs-up{display:none!important}@media (min-width:600px){.mdui-hidden-sm-up{display:none!important}}@media (min-width:1024px){.mdui-hidden-md-up{display:none!important}}@media (min-width:1440px){.mdui-hidden-lg-up{display:none!important}}@media (min-width:1920px){.mdui-hidden-xl-up{display:none!important}}.mdui-icon,.mdui-icon::before{color:inherit;font-weight:400;font-size:24px;font-style:normal;line-height:1;direction:ltr;letter-spacing:normal;white-space:nowrap;text-transform:none;vertical-align:middle;word-wrap:normal}.mdui-icon{display:inline-block;text-align:center}.mdui-icon::before{display:block!important;width:24px;height:24px}@font-face{font-weight:400;font-family:'Material Icons';font-style:normal;src:local('Material Icons'),local('MaterialIcons-Regular'),url(../icons/material-icons/MaterialIcons-Regular.woff2) format('woff2'),url(../icons/material-icons/MaterialIcons-Regular.woff) format('woff')}.material-icons{font-family:'Material Icons';-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:'liga';font-feature-settings:'liga'}.mdui-img-fluid,.mdui-video-fluid{display:block;max-width:100%;height:auto}.mdui-img-rounded{border-radius:2px}.mdui-img-circle{border-radius:50%}.mdui-video-container{position:relative;height:0;padding-bottom:56.25%;overflow:hidden}.mdui-video-container embed,.mdui-video-container iframe,.mdui-video-container object{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-weight:100;font-family:Roboto;font-style:normal;font-display:swap;src:local('Roboto Thin'),local('Roboto-Thin'),url(../fonts/roboto/Roboto-Thin.woff2) format('woff2'),url(../fonts/roboto/Roboto-Thin.woff) format('woff')}@font-face{font-weight:100;font-family:Roboto;font-style:italic;font-display:swap;src:local('Roboto ThinItalic'),local('Roboto-ThinItalic'),url(../fonts/roboto/Roboto-ThinItalic.woff2) format('woff2'),url(../fonts/roboto/Roboto-ThinItalic.woff) format('woff')}@font-face{font-weight:300;font-family:Roboto;font-style:normal;font-display:swap;src:local('Roboto Light'),local('Roboto-Light'),url(../fonts/roboto/Roboto-Light.woff2) format('woff2'),url(../fonts/roboto/Roboto-Light.woff) format('woff')}@font-face{font-weight:300;font-family:Roboto;font-style:italic;font-display:swap;src:local('Roboto LightItalic'),local('Roboto-LightItalic'),url(../fonts/roboto/Roboto-LightItalic.woff2) format('woff2'),url(../fonts/roboto/Roboto-LightItalic.woff) format('woff')}@font-face{font-weight:400;font-family:Roboto;font-style:normal;font-display:swap;src:local('Roboto Regular'),local('Roboto-Regular'),url(../fonts/roboto/Roboto-Regular.woff2) format('woff2'),url(../fonts/roboto/Roboto-Regular.woff) format('woff')}@font-face{font-weight:400;font-family:Roboto;font-style:italic;font-display:swap;src:local('Roboto RegularItalic'),local('Roboto-RegularItalic'),url(../fonts/roboto/Roboto-RegularItalic.woff2) format('woff2'),url(../fonts/roboto/Roboto-RegularItalic.woff) format('woff')}@font-face{font-weight:500;font-family:Roboto;font-style:normal;font-display:swap;src:local('Roboto Medium'),local('Roboto-Medium'),url(../fonts/roboto/Roboto-Medium.woff2) format('woff2'),url(../fonts/roboto/Roboto-Medium.woff) format('woff')}@font-face{font-weight:500;font-family:Roboto;font-style:italic;font-display:swap;src:local('Roboto MediumItalic'),local('Roboto-MediumItalic'),url(../fonts/roboto/Roboto-MediumItalic.woff2) format('woff2'),url(../fonts/roboto/Roboto-MediumItalic.woff) format('woff')}@font-face{font-weight:700;font-family:Roboto;font-style:normal;font-display:swap;src:local('Roboto Bold'),local('Roboto-Bold'),url(../fonts/roboto/Roboto-Bold.woff2) format('woff2'),url(../fonts/roboto/Roboto-Bold.woff) format('woff')}@font-face{font-weight:700;font-family:Roboto;font-style:italic;font-display:swap;src:local('Roboto BoldItalic'),local('Roboto-BoldItalic'),url(../fonts/roboto/Roboto-BoldItalic.woff2) format('woff2'),url(../fonts/roboto/Roboto-BoldItalic.woff) format('woff')}@font-face{font-weight:900;font-family:Roboto;font-style:normal;font-display:swap;src:local('Roboto Black'),local('Roboto-Black'),url(../fonts/roboto/Roboto-Black.woff2) format('woff2'),url(../fonts/roboto/Roboto-Black.woff) format('woff')}@font-face{font-weight:900;font-family:Roboto;font-style:italic;font-display:swap;src:local('Roboto BlackItalic'),local('Roboto-BlackItalic'),url(../fonts/roboto/Roboto-BlackItalic.woff2) format('woff2'),url(../fonts/roboto/Roboto-BlackItalic.woff) format('woff')}.mdui-typo-display-4,.mdui-typo-display-4-opacity{font-weight:300;font-size:112px;letter-spacing:-.04em}.mdui-typo-display-4-opacity{opacity:.54}.mdui-typo-display-3,.mdui-typo-display-3-opacity{font-weight:400;font-size:56px;letter-spacing:-.02em}.mdui-typo-display-3-opacity{opacity:.54}.mdui-typo-display-2,.mdui-typo-display-2-opacity{font-weight:400;font-size:45px;letter-spacing:0}.mdui-typo-display-2-opacity{opacity:.54}.mdui-typo-display-1,.mdui-typo-display-1-opacity{font-weight:400;font-size:34px;letter-spacing:0}.mdui-typo-display-1-opacity{opacity:.54}.mdui-typo-headline,.mdui-typo-headline-opacity{font-weight:400;font-size:24px;-moz-osx-font-smoothing:grayscale}.mdui-typo-headline-opacity{opacity:.87}.mdui-typo-title,.mdui-typo-title-opacity{font-weight:500;font-size:20px;letter-spacing:.02em}.mdui-typo-title-opacity{opacity:.87}.mdui-typo-subheading,.mdui-typo-subheading-opacity{font-weight:400;font-size:16px;letter-spacing:.04em}.mdui-typo-subheading-opacity{opacity:.87}.mdui-typo-body-2,.mdui-typo-body-2-opacity{font-weight:500;font-size:14px;letter-spacing:.04em}.mdui-typo-body-2-opacity{opacity:.87}.mdui-typo-body-1,.mdui-typo-body-1-opacity{font-weight:400;font-size:14px;letter-spacing:.04em}.mdui-typo-body-1-opacity{opacity:.87}.mdui-typo-caption,.mdui-typo-caption-opacity{font-weight:400;font-size:12px;letter-spacing:.08em}.mdui-typo-caption-opacity{opacity:.54}.mdui-typo{line-height:1.8;word-wrap:break-word}.mdui-typo address,.mdui-typo caption,.mdui-typo cite,.mdui-typo code,.mdui-typo dfn,.mdui-typo th{font-weight:400;font-style:normal}.mdui-typo caption,.mdui-typo th{text-align:left}.mdui-typo q::after,.mdui-typo q::before{content:''}.mdui-typo code,.mdui-typo kbd,.mdui-typo pre,.mdui-typo pre tt,.mdui-typo samp{font-family:Consolas,Courier,'Courier New',monospace}.mdui-typo figcaption{color:rgba(0,0,0,.54);font-size:80%}.mdui-typo [draggable=true],.mdui-typo [draggable]{cursor:move}.mdui-typo [draggable=false]{cursor:inherit}.mdui-typo .mdui-table,.mdui-typo .mdui-table-fluid,.mdui-typo dl,.mdui-typo figure,.mdui-typo form,.mdui-typo hr,.mdui-typo ol,.mdui-typo p,.mdui-typo pre,.mdui-typo table,.mdui-typo ul{margin:0 0 1.2em 0}.mdui-typo .mdui-table-fluid:last-child,.mdui-typo .mdui-table:last-child,.mdui-typo dl:last-child,.mdui-typo figure:last-child,.mdui-typo form:last-child,.mdui-typo hr:last-child,.mdui-typo ol:last-child,.mdui-typo p:last-child,.mdui-typo pre:last-child,.mdui-typo table:last-child,.mdui-typo ul:last-child{margin-bottom:0}.mdui-typo a{color:#ff4081;position:relative;display:inline-block;overflow:hidden;text-decoration:none;vertical-align:top;outline:0}.mdui-typo a::before{position:absolute;top:auto;bottom:1px;left:0;width:100%;height:1px;background-color:#ff4081;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:all .2s;transition:all .2s;content:' '}.mdui-typo a:focus::before,.mdui-typo a:hover::before{-webkit-transform:scaleX(1);transform:scaleX(1)}.mdui-typo small{font-size:80%}.mdui-typo blockquote{margin:1em 3em 1em 2em;padding-left:1em;font-weight:400;border-left:4px solid rgba(0,0,0,.12)}@media only screen and (max-width:599px){.mdui-typo blockquote{margin:1em 0}}.mdui-typo blockquote:last-child{margin-bottom:0}.mdui-typo blockquote footer{color:rgba(0,0,0,.54);font-size:86%}.mdui-typo mark{margin:0 5px;padding:2px;background:#fffdd1;border-bottom:1px solid #ffedce}.mdui-typo h1,.mdui-typo h2,.mdui-typo h3,.mdui-typo h4,.mdui-typo h5,.mdui-typo h6{margin-top:1.2em;margin-bottom:.6em;color:inherit;font-weight:400;font-family:inherit;line-height:1.35}.mdui-typo h1:last-child,.mdui-typo h2:last-child,.mdui-typo h3:last-child,.mdui-typo h4:last-child,.mdui-typo h5:last-child,.mdui-typo h6:last-child{margin-bottom:0}.mdui-typo h1 small,.mdui-typo h2 small,.mdui-typo h3 small,.mdui-typo h4 small,.mdui-typo h5 small,.mdui-typo h6 small{color:rgba(0,0,0,.54);font-weight:400;font-size:65%;line-height:1}.mdui-typo h1{font-size:2em}.mdui-typo h2{font-size:1.8em}.mdui-typo h3{font-size:1.6em}.mdui-typo h4{font-size:1.4em}.mdui-typo h5{font-size:1.2em}.mdui-typo h6{font-size:1.1em}.mdui-typo code{padding:2px 6px;color:#c7254e;background-color:#f7f7f9;border-radius:2px}.mdui-typo pre code{padding:0;color:inherit;font-size:inherit;line-height:1.7;background-color:transparent;border-radius:0}.mdui-typo abbr[title]{text-decoration:none;border-bottom:1px dotted;cursor:help}.mdui-typo ins{text-decoration:none;border-bottom:1px solid}.mdui-typo u{text-decoration:none;border-bottom:1px solid}.mdui-typo del{text-decoration:line-through}.mdui-typo hr{height:10px;margin-bottom:.8em;border:none;border-bottom:1px solid rgba(0,0,0,.12)}.mdui-typo pre{padding:12px 16px;overflow-x:auto;border:1px solid rgba(0,0,0,.12);border-radius:2px;-webkit-overflow-scrolling:touch}.mdui-typo kbd{padding:2px 6px;color:#fff;font-size:90%;background-color:#333;border-radius:2px}.mdui-typo ul{padding-left:2em;list-style:disc}.mdui-typo ol{padding-left:2em;list-style:decimal}.mdui-typo li ol,.mdui-typo li ul{margin:.8em 0}.mdui-typo li ul{list-style:circle}.mdui-typo img{max-width:100%}.mdui-typo figure{text-align:center}.mdui-typo figure figcaption{margin-top:8px;color:#999;font-size:14px}.mdui-typo figure figcaption:empty::before{z-index:-1;color:#bfbfbf;cursor:text;content:attr(placeholder)}.mdui-theme-accent-amber .mdui-typo a{color:#ffd740}.mdui-theme-accent-amber .mdui-typo a::before{background-color:#ffd740}.mdui-theme-accent-blue .mdui-typo a{color:#448aff}.mdui-theme-accent-blue .mdui-typo a::before{background-color:#448aff}.mdui-theme-accent-cyan .mdui-typo a{color:#18ffff}.mdui-theme-accent-cyan .mdui-typo a::before{background-color:#18ffff}.mdui-theme-accent-deep-orange .mdui-typo a{color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-typo a::before{background-color:#ff6e40}.mdui-theme-accent-deep-purple .mdui-typo a{color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-typo a::before{background-color:#7c4dff}.mdui-theme-accent-green .mdui-typo a{color:#69f0ae}.mdui-theme-accent-green .mdui-typo a::before{background-color:#69f0ae}.mdui-theme-accent-indigo .mdui-typo a{color:#536dfe}.mdui-theme-accent-indigo .mdui-typo a::before{background-color:#536dfe}.mdui-theme-accent-light-blue .mdui-typo a{color:#40c4ff}.mdui-theme-accent-light-blue .mdui-typo a::before{background-color:#40c4ff}.mdui-theme-accent-light-green .mdui-typo a{color:#b2ff59}.mdui-theme-accent-light-green .mdui-typo a::before{background-color:#b2ff59}.mdui-theme-accent-lime .mdui-typo a{color:#eeff41}.mdui-theme-accent-lime .mdui-typo a::before{background-color:#eeff41}.mdui-theme-accent-orange .mdui-typo a{color:#ffab40}.mdui-theme-accent-orange .mdui-typo a::before{background-color:#ffab40}.mdui-theme-accent-pink .mdui-typo a{color:#ff4081}.mdui-theme-accent-pink .mdui-typo a::before{background-color:#ff4081}.mdui-theme-accent-purple .mdui-typo a{color:#e040fb}.mdui-theme-accent-purple .mdui-typo a::before{background-color:#e040fb}.mdui-theme-accent-red .mdui-typo a{color:#ff5252}.mdui-theme-accent-red .mdui-typo a::before{background-color:#ff5252}.mdui-theme-accent-teal .mdui-typo a{color:#64ffda}.mdui-theme-accent-teal .mdui-typo a::before{background-color:#64ffda}.mdui-theme-accent-yellow .mdui-typo a{color:#ff0}.mdui-theme-accent-yellow .mdui-typo a::before{background-color:#ff0}.mdui-theme-layout-dark .mdui-typo blockquote{border-left-color:rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-typo blockquote footer{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-typo figcaption{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-typo mark{background:#aaa;border-bottom-color:#bbb}.mdui-theme-layout-dark .mdui-typo h1 small,.mdui-theme-layout-dark .mdui-typo h2 small,.mdui-theme-layout-dark .mdui-typo h3 small,.mdui-theme-layout-dark .mdui-typo h4 small,.mdui-theme-layout-dark .mdui-typo h5 small,.mdui-theme-layout-dark .mdui-typo h6 small{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-typo code{color:#ffcdd2;background-color:#424242}.mdui-theme-layout-dark .mdui-typo pre{background:#424242;border-color:rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-typo kbd{background:#424242}.mdui-theme-layout-dark .mdui-typo hr{border-color:rgba(255,255,255,.12)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-typo blockquote{border-left-color:rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-typo blockquote footer{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-typo figcaption{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-typo mark{background:#aaa;border-bottom-color:#bbb}.mdui-theme-layout-auto .mdui-typo h1 small,.mdui-theme-layout-auto .mdui-typo h2 small,.mdui-theme-layout-auto .mdui-typo h3 small,.mdui-theme-layout-auto .mdui-typo h4 small,.mdui-theme-layout-auto .mdui-typo h5 small,.mdui-theme-layout-auto .mdui-typo h6 small{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-typo code{color:#ffcdd2;background-color:#424242}.mdui-theme-layout-auto .mdui-typo pre{background:#424242;border-color:rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-typo kbd{background:#424242}.mdui-theme-layout-auto .mdui-typo hr{border-color:rgba(255,255,255,.12)}}.mdui-container,.mdui-container-fluid{-webkit-box-sizing:border-box;box-sizing:border-box;margin-right:auto;margin-left:auto;padding-right:8px;padding-left:8px}.mdui-container-fluid::after,.mdui-container::after{display:table;clear:both;content:''}.mdui-container{width:96%;max-width:1280px}@media (min-width:600px){.mdui-container{width:94%}}@media (min-width:1024px){.mdui-container{width:92%}}.mdui-row,[class*=mdui-row-]{margin-right:-8px;margin-left:-8px}.mdui-row::after,[class*=mdui-row-]::after{display:table;clear:both;content:''}.mdui-col,[class*=mdui-col-lg-],[class*=mdui-col-md-],[class*=mdui-col-sm-],[class*=mdui-col-xl-],[class*=mdui-col-xs-]{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:1px;padding-right:8px;padding-left:8px}.mdui-row-gapless .mdui-col,.mdui-row-gapless [class*=mdui-col-lg-],.mdui-row-gapless [class*=mdui-col-md-],.mdui-row-gapless [class*=mdui-col-sm-],.mdui-row-gapless [class*=mdui-col-xl-],.mdui-row-gapless [class*=mdui-col-xs-]{padding-right:0;padding-left:0}.mdui-row-gapless .mdui-row,.mdui-row-gapless [class*=mdui-row-]{margin-right:0;margin-left:0}.mdui-col-xs-1{float:left;width:8.333333%}.mdui-col-offset-xs-1{margin-left:8.333333%}.mdui-row-xs-1 .mdui-col{float:left;width:100%}.mdui-col-xs-2{float:left;width:16.666667%}.mdui-col-offset-xs-2{margin-left:16.666667%}.mdui-row-xs-2 .mdui-col{float:left;width:50%}.mdui-col-xs-3{float:left;width:25%}.mdui-col-offset-xs-3{margin-left:25%}.mdui-row-xs-3 .mdui-col{float:left;width:33.333333%}.mdui-col-xs-4{float:left;width:33.333333%}.mdui-col-offset-xs-4{margin-left:33.333333%}.mdui-row-xs-4 .mdui-col{float:left;width:25%}.mdui-col-xs-5{float:left;width:41.666667%}.mdui-col-offset-xs-5{margin-left:41.666667%}.mdui-row-xs-5 .mdui-col{float:left;width:20%}.mdui-col-xs-6{float:left;width:50%}.mdui-col-offset-xs-6{margin-left:50%}.mdui-row-xs-6 .mdui-col{float:left;width:16.666667%}.mdui-col-xs-7{float:left;width:58.333333%}.mdui-col-offset-xs-7{margin-left:58.333333%}.mdui-row-xs-7 .mdui-col{float:left;width:14.285714%}.mdui-col-xs-8{float:left;width:66.666667%}.mdui-col-offset-xs-8{margin-left:66.666667%}.mdui-row-xs-8 .mdui-col{float:left;width:12.5%}.mdui-col-xs-9{float:left;width:75%}.mdui-col-offset-xs-9{margin-left:75%}.mdui-row-xs-9 .mdui-col{float:left;width:11.111111%}.mdui-col-xs-10{float:left;width:83.333333%}.mdui-col-offset-xs-10{margin-left:83.333333%}.mdui-row-xs-10 .mdui-col{float:left;width:10%}.mdui-col-xs-11{float:left;width:91.666667%}.mdui-col-offset-xs-11{margin-left:91.666667%}.mdui-row-xs-11 .mdui-col{float:left;width:9.090909%}.mdui-col-xs-12{float:left;width:100%}.mdui-col-offset-xs-12{margin-left:100%}.mdui-row-xs-12 .mdui-col{float:left;width:8.333333%}@media (min-width:600px){.mdui-col-sm-1{float:left;width:8.333333%}.mdui-col-offset-sm-1{margin-left:8.333333%}.mdui-row-sm-1 .mdui-col{float:left;width:100%}.mdui-col-sm-2{float:left;width:16.666667%}.mdui-col-offset-sm-2{margin-left:16.666667%}.mdui-row-sm-2 .mdui-col{float:left;width:50%}.mdui-col-sm-3{float:left;width:25%}.mdui-col-offset-sm-3{margin-left:25%}.mdui-row-sm-3 .mdui-col{float:left;width:33.333333%}.mdui-col-sm-4{float:left;width:33.333333%}.mdui-col-offset-sm-4{margin-left:33.333333%}.mdui-row-sm-4 .mdui-col{float:left;width:25%}.mdui-col-sm-5{float:left;width:41.666667%}.mdui-col-offset-sm-5{margin-left:41.666667%}.mdui-row-sm-5 .mdui-col{float:left;width:20%}.mdui-col-sm-6{float:left;width:50%}.mdui-col-offset-sm-6{margin-left:50%}.mdui-row-sm-6 .mdui-col{float:left;width:16.666667%}.mdui-col-sm-7{float:left;width:58.333333%}.mdui-col-offset-sm-7{margin-left:58.333333%}.mdui-row-sm-7 .mdui-col{float:left;width:14.285714%}.mdui-col-sm-8{float:left;width:66.666667%}.mdui-col-offset-sm-8{margin-left:66.666667%}.mdui-row-sm-8 .mdui-col{float:left;width:12.5%}.mdui-col-sm-9{float:left;width:75%}.mdui-col-offset-sm-9{margin-left:75%}.mdui-row-sm-9 .mdui-col{float:left;width:11.111111%}.mdui-col-sm-10{float:left;width:83.333333%}.mdui-col-offset-sm-10{margin-left:83.333333%}.mdui-row-sm-10 .mdui-col{float:left;width:10%}.mdui-col-sm-11{float:left;width:91.666667%}.mdui-col-offset-sm-11{margin-left:91.666667%}.mdui-row-sm-11 .mdui-col{float:left;width:9.090909%}.mdui-col-sm-12{float:left;width:100%}.mdui-col-offset-sm-12{margin-left:100%}.mdui-row-sm-12 .mdui-col{float:left;width:8.333333%}}@media (min-width:1024px){.mdui-col-md-1{float:left;width:8.333333%}.mdui-col-offset-md-1{margin-left:8.333333%}.mdui-row-md-1 .mdui-col{float:left;width:100%}.mdui-col-md-2{float:left;width:16.666667%}.mdui-col-offset-md-2{margin-left:16.666667%}.mdui-row-md-2 .mdui-col{float:left;width:50%}.mdui-col-md-3{float:left;width:25%}.mdui-col-offset-md-3{margin-left:25%}.mdui-row-md-3 .mdui-col{float:left;width:33.333333%}.mdui-col-md-4{float:left;width:33.333333%}.mdui-col-offset-md-4{margin-left:33.333333%}.mdui-row-md-4 .mdui-col{float:left;width:25%}.mdui-col-md-5{float:left;width:41.666667%}.mdui-col-offset-md-5{margin-left:41.666667%}.mdui-row-md-5 .mdui-col{float:left;width:20%}.mdui-col-md-6{float:left;width:50%}.mdui-col-offset-md-6{margin-left:50%}.mdui-row-md-6 .mdui-col{float:left;width:16.666667%}.mdui-col-md-7{float:left;width:58.333333%}.mdui-col-offset-md-7{margin-left:58.333333%}.mdui-row-md-7 .mdui-col{float:left;width:14.285714%}.mdui-col-md-8{float:left;width:66.666667%}.mdui-col-offset-md-8{margin-left:66.666667%}.mdui-row-md-8 .mdui-col{float:left;width:12.5%}.mdui-col-md-9{float:left;width:75%}.mdui-col-offset-md-9{margin-left:75%}.mdui-row-md-9 .mdui-col{float:left;width:11.111111%}.mdui-col-md-10{float:left;width:83.333333%}.mdui-col-offset-md-10{margin-left:83.333333%}.mdui-row-md-10 .mdui-col{float:left;width:10%}.mdui-col-md-11{float:left;width:91.666667%}.mdui-col-offset-md-11{margin-left:91.666667%}.mdui-row-md-11 .mdui-col{float:left;width:9.090909%}.mdui-col-md-12{float:left;width:100%}.mdui-col-offset-md-12{margin-left:100%}.mdui-row-md-12 .mdui-col{float:left;width:8.333333%}}@media (min-width:1440px){.mdui-col-lg-1{float:left;width:8.333333%}.mdui-col-offset-lg-1{margin-left:8.333333%}.mdui-row-lg-1 .mdui-col{float:left;width:100%}.mdui-col-lg-2{float:left;width:16.666667%}.mdui-col-offset-lg-2{margin-left:16.666667%}.mdui-row-lg-2 .mdui-col{float:left;width:50%}.mdui-col-lg-3{float:left;width:25%}.mdui-col-offset-lg-3{margin-left:25%}.mdui-row-lg-3 .mdui-col{float:left;width:33.333333%}.mdui-col-lg-4{float:left;width:33.333333%}.mdui-col-offset-lg-4{margin-left:33.333333%}.mdui-row-lg-4 .mdui-col{float:left;width:25%}.mdui-col-lg-5{float:left;width:41.666667%}.mdui-col-offset-lg-5{margin-left:41.666667%}.mdui-row-lg-5 .mdui-col{float:left;width:20%}.mdui-col-lg-6{float:left;width:50%}.mdui-col-offset-lg-6{margin-left:50%}.mdui-row-lg-6 .mdui-col{float:left;width:16.666667%}.mdui-col-lg-7{float:left;width:58.333333%}.mdui-col-offset-lg-7{margin-left:58.333333%}.mdui-row-lg-7 .mdui-col{float:left;width:14.285714%}.mdui-col-lg-8{float:left;width:66.666667%}.mdui-col-offset-lg-8{margin-left:66.666667%}.mdui-row-lg-8 .mdui-col{float:left;width:12.5%}.mdui-col-lg-9{float:left;width:75%}.mdui-col-offset-lg-9{margin-left:75%}.mdui-row-lg-9 .mdui-col{float:left;width:11.111111%}.mdui-col-lg-10{float:left;width:83.333333%}.mdui-col-offset-lg-10{margin-left:83.333333%}.mdui-row-lg-10 .mdui-col{float:left;width:10%}.mdui-col-lg-11{float:left;width:91.666667%}.mdui-col-offset-lg-11{margin-left:91.666667%}.mdui-row-lg-11 .mdui-col{float:left;width:9.090909%}.mdui-col-lg-12{float:left;width:100%}.mdui-col-offset-lg-12{margin-left:100%}.mdui-row-lg-12 .mdui-col{float:left;width:8.333333%}}@media (min-width:1920px){.mdui-col-xl-1{float:left;width:8.333333%}.mdui-col-offset-xl-1{margin-left:8.333333%}.mdui-row-xl-1 .mdui-col{float:left;width:100%}.mdui-col-xl-2{float:left;width:16.666667%}.mdui-col-offset-xl-2{margin-left:16.666667%}.mdui-row-xl-2 .mdui-col{float:left;width:50%}.mdui-col-xl-3{float:left;width:25%}.mdui-col-offset-xl-3{margin-left:25%}.mdui-row-xl-3 .mdui-col{float:left;width:33.333333%}.mdui-col-xl-4{float:left;width:33.333333%}.mdui-col-offset-xl-4{margin-left:33.333333%}.mdui-row-xl-4 .mdui-col{float:left;width:25%}.mdui-col-xl-5{float:left;width:41.666667%}.mdui-col-offset-xl-5{margin-left:41.666667%}.mdui-row-xl-5 .mdui-col{float:left;width:20%}.mdui-col-xl-6{float:left;width:50%}.mdui-col-offset-xl-6{margin-left:50%}.mdui-row-xl-6 .mdui-col{float:left;width:16.666667%}.mdui-col-xl-7{float:left;width:58.333333%}.mdui-col-offset-xl-7{margin-left:58.333333%}.mdui-row-xl-7 .mdui-col{float:left;width:14.285714%}.mdui-col-xl-8{float:left;width:66.666667%}.mdui-col-offset-xl-8{margin-left:66.666667%}.mdui-row-xl-8 .mdui-col{float:left;width:12.5%}.mdui-col-xl-9{float:left;width:75%}.mdui-col-offset-xl-9{margin-left:75%}.mdui-row-xl-9 .mdui-col{float:left;width:11.111111%}.mdui-col-xl-10{float:left;width:83.333333%}.mdui-col-offset-xl-10{margin-left:83.333333%}.mdui-row-xl-10 .mdui-col{float:left;width:10%}.mdui-col-xl-11{float:left;width:91.666667%}.mdui-col-offset-xl-11{margin-left:91.666667%}.mdui-row-xl-11 .mdui-col{float:left;width:9.090909%}.mdui-col-xl-12{float:left;width:100%}.mdui-col-offset-xl-12{margin-left:100%}.mdui-row-xl-12 .mdui-col{float:left;width:8.333333%}}.mdui-shadow-0{-webkit-box-shadow:none!important;box-shadow:none!important}.mdui-shadow-1{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)!important;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)!important}.mdui-shadow-2{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important}.mdui-shadow-3{-webkit-box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)!important;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)!important}.mdui-shadow-4{-webkit-box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)!important;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)!important}.mdui-shadow-5{-webkit-box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)!important;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)!important}.mdui-shadow-6{-webkit-box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)!important;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)!important}.mdui-shadow-7{-webkit-box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)!important;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)!important}.mdui-shadow-8{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)!important;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)!important}.mdui-shadow-9{-webkit-box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)!important;box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)!important}.mdui-shadow-10{-webkit-box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)!important;box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)!important}.mdui-shadow-11{-webkit-box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)!important;box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)!important}.mdui-shadow-12{-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)!important;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)!important}.mdui-shadow-13{-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)!important;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)!important}.mdui-shadow-14{-webkit-box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)!important;box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)!important}.mdui-shadow-15{-webkit-box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)!important;box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)!important}.mdui-shadow-16{-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)!important;box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)!important}.mdui-shadow-17{-webkit-box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)!important;box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)!important}.mdui-shadow-18{-webkit-box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)!important;box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)!important}.mdui-shadow-19{-webkit-box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)!important;box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)!important}.mdui-shadow-20{-webkit-box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)!important;box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)!important}.mdui-shadow-21{-webkit-box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)!important;box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)!important}.mdui-shadow-22{-webkit-box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)!important;box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)!important}.mdui-shadow-23{-webkit-box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)!important;box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)!important}.mdui-shadow-24{-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)!important;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)!important}.mdui-hoverable{-webkit-transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);will-change:box-shadow}.mdui-hoverable:focus,.mdui-hoverable:hover{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-headroom{-webkit-transition:all .3s cubic-bezier(.4,0,.2,1)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.mdui-headroom-pinned-top{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.mdui-headroom-unpinned-top{-webkit-transform:translate3d(0,-100%,0)!important;transform:translate3d(0,-100%,0)!important;-webkit-box-shadow:none!important;box-shadow:none!important}.mdui-headroom-pinned-down{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.mdui-headroom-unpinned-down{-webkit-transform:translate3d(0,100%,0)!important;transform:translate3d(0,100%,0)!important;-webkit-box-shadow:none!important;box-shadow:none!important}.mdui-headroom-pinned-toolbar{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.mdui-headroom-unpinned-toolbar{-webkit-transform:translate3d(0,-56px,0)!important;transform:translate3d(0,-56px,0)!important}@media (min-width:600px){.mdui-headroom-unpinned-toolbar{-webkit-transform:translate3d(0,-64px,0)!important;transform:translate3d(0,-64px,0)!important}}@media (orientation:landscape) and (max-width:959px){.mdui-headroom-unpinned-toolbar{-webkit-transform:translate3d(0,-48px,0)!important;transform:translate3d(0,-48px,0)!important}}.mdui-collapse-item-header .mdui-collapse-item-arrow,.mdui-collapse-item-header.mdui-collapse-item-arrow{-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1);will-change:transform}.mdui-collapse-item-body{height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);will-change:height}.mdui-collapse-item-body .mdui-list-item{padding-left:72px}.mdui-collapse-item-open>.mdui-collapse-item-header .mdui-collapse-item-arrow,.mdui-collapse-item-open>.mdui-collapse-item-header.mdui-collapse-item-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mdui-collapse-item-open>.mdui-collapse-item-body{height:auto}.mdui-panel{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.mdui-panel-item{color:rgba(0,0,0,.87);background-color:#fff;-webkit-transition:margin .3s cubic-bezier(.4,0,.2,1);transition:margin .3s cubic-bezier(.4,0,.2,1);will-change:margin;border-bottom:1px solid rgba(0,0,0,.12);-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-panel-item:last-child{border-bottom:none}.mdui-panel-item-header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:48px;padding:0 24px;font-size:15px;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);will-change:height,background-color;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-panel-item-header:active{background-color:#eee}.mdui-panel-item-title{-webkit-box-sizing:border-box;box-sizing:border-box;width:36%;min-width:36%;padding-right:16px;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-panel-item-summary{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:16px;color:rgba(0,0,0,.54);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-panel-item-arrow{position:absolute;top:12px;right:24px;color:rgba(0,0,0,.54);-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:transform,top}.mdui-panel-item-summary+.mdui-panel-item-arrow{position:relative;top:0!important;right:0}.mdui-panel-item-body{height:0;padding:0 24px;overflow:hidden;-webkit-transition:height .3s cubic-bezier(.4,0,.2,1);transition:height .3s cubic-bezier(.4,0,.2,1);will-change:height}.mdui-panel-item-body::after,.mdui-panel-item-body::before{display:table;content:' '}.mdui-panel-item-body::after{clear:both}.mdui-panel-item-body::after,.mdui-panel-item-body::before{display:table;content:' '}.mdui-panel-item-body::after{clear:both}.mdui-panel-item-body::after{height:16px}.mdui-panel-item-actions{display:block;width:100%;margin:16px -24px 0 -24px;padding:16px 24px 0 24px;text-align:right;border-top:1px solid rgba(0,0,0,.12)}.mdui-panel-item-actions .mdui-btn{margin-left:8px}.mdui-panel-item-actions .mdui-btn:first-child{margin-left:0}.mdui-panel-item-open{height:auto;margin-top:16px;margin-bottom:16px}.mdui-panel-item-open>.mdui-panel-item-header{height:64px}.mdui-panel-item-open>.mdui-panel-item-header .mdui-panel-item-arrow{top:20px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mdui-panel-item-open>.mdui-panel-item-body{height:auto}.mdui-panel-gapless{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-panel-gapless .mdui-panel-item{-webkit-box-shadow:none;box-shadow:none}.mdui-panel-gapless .mdui-panel-item-open{margin-top:0;margin-bottom:0}.mdui-panel-popout .mdui-panel-item-open{margin-right:-16px;margin-left:-16px}.mdui-theme-layout-dark .mdui-panel-item{color:#fff;background-color:#303030;border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-panel-item:last-child{border-bottom:none}.mdui-theme-layout-dark .mdui-panel-item-header:active{background-color:#424242}.mdui-theme-layout-dark .mdui-panel-item-summary{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-panel-item-arrow{color:#fff}.mdui-theme-layout-dark .mdui-panel-item-actions{border-top:1px solid rgba(255,255,255,.12)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-panel-item{color:#fff;background-color:#303030;border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-panel-item:last-child{border-bottom:none}.mdui-theme-layout-auto .mdui-panel-item-header:active{background-color:#424242}.mdui-theme-layout-auto .mdui-panel-item-summary{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-panel-item-arrow{color:#fff}.mdui-theme-layout-auto .mdui-panel-item-actions{border-top:1px solid rgba(255,255,255,.12)}}.mdui-table{position:relative;width:100%;background-color:#fff;border:1px solid rgba(0,0,0,.12);border-bottom:none;border-collapse:separate;border-spacing:0;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-table tbody tr{position:relative;-webkit-transition:background-color .28s cubic-bezier(.4,0,.2,1);transition:background-color .28s cubic-bezier(.4,0,.2,1)}.mdui-table td,.mdui-table th{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;padding:12px 28px;text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12)}.mdui-table th{color:rgba(0,0,0,.54);font-weight:700;font-size:13px;line-height:32px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-table td{color:rgba(0,0,0,.87);font-size:14px;line-height:24px}.mdui-table-cell-checkbox{padding-top:0!important;padding-bottom:0!important;padding-left:24px!important}.mdui-table-cell-checkbox .mdui-checkbox{margin-top:7px}.mdui-table-cell-checkbox+td,.mdui-table-cell-checkbox+th{padding-left:6px!important}th.mdui-table-cell-checkbox .mdui-checkbox{margin-top:11px}.mdui-table td:last-child,.mdui-table th:last-child{padding-right:24px}.mdui-table td:first-child,.mdui-table th:first-child{padding-right:0;padding-left:24px}.mdui-table td:nth-child(2),.mdui-table th:nth-child(2){padding-left:24px}.mdui-table-hoverable tbody tr:hover{background-color:#eee}.mdui-table-fluid{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid rgba(0,0,0,.12);border-bottom:none;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-table-fluid .mdui-table{-webkit-box-shadow:none;box-shadow:none;margin:0;border:none}.mdui-table-col-numeric{text-align:right!important}.mdui-table-row-selected{background-color:#f5f5f5}.mdui-theme-layout-dark .mdui-table{background-color:#303030;border:1px solid rgba(255,255,255,.12);border-bottom:none}.mdui-theme-layout-dark .mdui-table td,.mdui-theme-layout-dark .mdui-table th{border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-table th{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-table td{color:#fff}.mdui-theme-layout-dark .mdui-table-hoverable tbody tr:hover{background-color:#616161}.mdui-theme-layout-dark .mdui-table-fluid{border:1px solid rgba(255,255,255,.12);border-bottom:none}.mdui-theme-layout-dark .mdui-table-fluid .mdui-table{-webkit-box-shadow:none;box-shadow:none;border:none}.mdui-theme-layout-dark .mdui-table-row-selected{background-color:#424242}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-table{background-color:#303030;border:1px solid rgba(255,255,255,.12);border-bottom:none}.mdui-theme-layout-auto .mdui-table td,.mdui-theme-layout-auto .mdui-table th{border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-table th{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-table td{color:#fff}.mdui-theme-layout-auto .mdui-table-hoverable tbody tr:hover{background-color:#616161}.mdui-theme-layout-auto .mdui-table-fluid{border:1px solid rgba(255,255,255,.12);border-bottom:none}.mdui-theme-layout-auto .mdui-table-fluid .mdui-table{-webkit-box-shadow:none;box-shadow:none;border:none}.mdui-theme-layout-auto .mdui-table-row-selected{background-color:#424242}}.mdui-divider,.mdui-divider-dark,.mdui-divider-inset,.mdui-divider-inset-dark,.mdui-divider-inset-light,.mdui-divider-light{height:1px;margin:-1px 0 0 0;border:none}.mdui-divider-inset,.mdui-divider-inset-dark,.mdui-divider-inset-light{margin-left:72px}.mdui-divider,.mdui-divider-inset{background-color:rgba(0,0,0,.12)}.mdui-divider-inset-light,.mdui-divider-light{background-color:rgba(255,255,255,.12)}.mdui-divider-dark,.mdui-divider-inset-dark{background-color:rgba(0,0,0,.12)}.mdui-theme-layout-dark .mdui-divider,.mdui-theme-layout-dark .mdui-divider-inset{background-color:rgba(255,255,255,.12)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-divider,.mdui-theme-layout-auto .mdui-divider-inset{background-color:rgba(255,255,255,.12)}}.mdui-ripple{position:relative;overflow:hidden;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-ripple-wave{position:absolute!important;top:0;left:0;z-index:1;margin:0;padding:0;font-size:0;background-color:rgba(0,0,0,.1);border-radius:50%;-webkit-transform:translate3d(0,0,0) scale(0);transform:translate3d(0,0,0) scale(0);-webkit-transition-duration:1.4s;transition-duration:1.4s;pointer-events:none}.mdui-ripple[class*=mdui-color-] .mdui-ripple-wave{background-color:rgba(255,255,255,.3)}.mdui-ripple-white .mdui-ripple-wave{background-color:rgba(255,255,255,.3)!important}.mdui-ripple-black .mdui-ripple-wave{background-color:rgba(0,0,0,.1)!important}.mdui-ripple-wave-fill{opacity:.35;-webkit-transition-duration:.3s;transition-duration:.3s}.mdui-ripple-wave-out{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s}.mdui-ripple-amber .mdui-ripple-wave{background-color:rgba(255,193,7,.3)!important}.mdui-ripple-blue .mdui-ripple-wave{background-color:rgba(33,150,243,.3)!important}.mdui-ripple-blue-grey .mdui-ripple-wave{background-color:rgba(96,125,139,.3)!important}.mdui-ripple-brown .mdui-ripple-wave{background-color:rgba(121,85,72,.3)!important}.mdui-ripple-cyan .mdui-ripple-wave{background-color:rgba(0,188,212,.3)!important}.mdui-ripple-deep-orange .mdui-ripple-wave{background-color:rgba(255,87,34,.3)!important}.mdui-ripple-deep-purple .mdui-ripple-wave{background-color:rgba(103,58,183,.3)!important}.mdui-ripple-green .mdui-ripple-wave{background-color:rgba(76,175,80,.3)!important}.mdui-ripple-grey .mdui-ripple-wave{background-color:rgba(158,158,158,.3)!important}.mdui-ripple-indigo .mdui-ripple-wave{background-color:rgba(63,81,181,.3)!important}.mdui-ripple-light-blue .mdui-ripple-wave{background-color:rgba(3,169,244,.3)!important}.mdui-ripple-light-green .mdui-ripple-wave{background-color:rgba(139,195,74,.3)!important}.mdui-ripple-lime .mdui-ripple-wave{background-color:rgba(205,220,57,.3)!important}.mdui-ripple-orange .mdui-ripple-wave{background-color:rgba(255,152,0,.3)!important}.mdui-ripple-pink .mdui-ripple-wave{background-color:rgba(233,30,99,.3)!important}.mdui-ripple-purple .mdui-ripple-wave{background-color:rgba(156,39,176,.3)!important}.mdui-ripple-red .mdui-ripple-wave{background-color:rgba(244,67,54,.3)!important}.mdui-ripple-teal .mdui-ripple-wave{background-color:rgba(0,150,136,.3)!important}.mdui-ripple-yellow .mdui-ripple-wave{background-color:rgba(255,235,59,.3)!important}.mdui-theme-layout-dark .mdui-ripple-wave{background-color:rgba(255,255,255,.3)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-ripple-wave{background-color:rgba(255,255,255,.3)}}.mdui-textfield{position:relative;padding-top:16px;padding-bottom:8px;overflow:hidden}.mdui-textfield-has-bottom{padding-bottom:28px}.mdui-textfield-input{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:36px;margin:0;padding:8px 0;overflow:hidden;color:rgba(0,0,0,.87);font-size:16px;font-family:inherit;line-height:20px;background:0 0;border:none;border-bottom:1px solid rgba(0,0,0,.42);border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:border-bottom-color,padding-right,-webkit-box-shadow;transition-property:border-bottom-color,padding-right,-webkit-box-shadow;transition-property:border-bottom-color,padding-right,box-shadow;transition-property:border-bottom-color,padding-right,box-shadow,-webkit-box-shadow;-webkit-appearance:none;-moz-appearance:none;appearance:none;resize:none}.mdui-textfield-input::-webkit-input-placeholder{color:inherit;opacity:.42}.mdui-textfield-input:not([disabled]):hover{border-bottom:1px solid rgba(0,0,0,.87);-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,.87);box-shadow:0 1px 0 0 rgba(0,0,0,.87);cursor:pointer}.mdui-textfield-input[rows]{height:auto!important;overflow:auto;-webkit-overflow-scrolling:touch}.mdui-textfield-label{display:block;width:100%;color:rgba(0,0,0,.54);font-size:16px;-webkit-transform:scale(.75) translateY(0);transform:scale(.75) translateY(0);-webkit-transform-origin:left;transform-origin:left;-webkit-transition:all .2s;transition:all .2s;pointer-events:none}.mdui-textfield-error,.mdui-textfield-helper{position:absolute;bottom:8px;height:12px;font-size:12px;line-height:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-textfield-error{color:rgba(255,23,68,.87);visibility:hidden}.mdui-textfield-helper{color:rgba(0,0,0,.54)}.mdui-textfield .mdui-icon{position:absolute;bottom:8px;padding:6px;color:rgba(0,0,0,.54)}.mdui-textfield .mdui-icon~.mdui-textfield-error,.mdui-textfield .mdui-icon~.mdui-textfield-flex-wrap,.mdui-textfield .mdui-icon~.mdui-textfield-helper,.mdui-textfield .mdui-icon~.mdui-textfield-input,.mdui-textfield .mdui-icon~.mdui-textfield-label{width:calc(100% - 56px);margin-left:56px}.mdui-textfield-has-bottom .mdui-icon{bottom:28px}.mdui-textfield-focus .mdui-textfield-input,.mdui-textfield-focus .mdui-textfield-input:hover{border-bottom-color:#c51162;-webkit-box-shadow:0 1px 0 0 #c51162;box-shadow:0 1px 0 0 #c51162}.mdui-textfield-focus .mdui-icon,.mdui-textfield-focus .mdui-textfield-label{color:rgba(197,17,98,.87)}.mdui-textfield-floating-label .mdui-textfield-label{color:rgba(0,0,0,.35);-webkit-transform:scale(1) translateY(27px);transform:scale(1) translateY(27px)}.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label{color:rgba(0,0,0,.65);-webkit-transform:scale(.75) translateY(0);transform:scale(.75) translateY(0)}.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label{color:#e91e63}.mdui-textfield-expandable{width:36px;min-height:36px;padding:1px 0;-webkit-transition:width .3s cubic-bezier(.4,0,.2,1);transition:width .3s cubic-bezier(.4,0,.2,1)}.mdui-textfield-expandable .mdui-icon{bottom:0;padding:0}.mdui-textfield-expandable .mdui-textfield-input{width:calc(100% - 36px);margin-left:36px;padding-right:0}.mdui-textfield-expandable .mdui-textfield-icon{position:absolute;top:0;left:0}.mdui-textfield-expandable .mdui-textfield-close{position:absolute;top:0;right:0;-webkit-transform:scale(0);transform:scale(0)}.mdui-textfield-expandable.mdui-textfield-expanded{width:100%}.mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-input{padding-right:36px}.mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-close{-webkit-transform:scale(1);transform:scale(1)}.mdui-textfield-invalid .mdui-textfield-input,.mdui-textfield-invalid-html5 .mdui-textfield-input,.mdui-textfield-invalid-html5.mdui-textfield-focus .mdui-textfield-input,.mdui-textfield-invalid.mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff1744!important;-webkit-box-shadow:0 1px 0 0 #ff1744!important;box-shadow:0 1px 0 0 #ff1744!important}.mdui-textfield-invalid .mdui-textfield-label,.mdui-textfield-invalid-html5 .mdui-textfield-label{color:#ff1744!important}.mdui-textfield-invalid-html5.mdui-textfield-floating-label .mdui-textfield-label,.mdui-textfield-invalid.mdui-textfield-floating-label .mdui-textfield-label{color:rgba(255,23,68,.35)!important}.mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label,.mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label{color:#ff1744!important}.mdui-textfield-invalid .mdui-textfield-error,.mdui-textfield-invalid-html5 .mdui-textfield-error{visibility:visible}.mdui-textfield-invalid .mdui-textfield-error+.mdui-textfield-helper,.mdui-textfield-invalid-html5 .mdui-textfield-error+.mdui-textfield-helper{visibility:hidden}.mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder,.mdui-textfield-disabled .mdui-textfield-label{color:rgba(0,0,0,.38)}.mdui-textfield-disabled .mdui-textfield-input{color:rgba(0,0,0,.42);cursor:default}.mdui-textfield-disabled .mdui-textfield-input{border-bottom:1px dashed rgba(0,0,0,.42)}.mdui-textfield-counter{position:absolute;right:8px;bottom:8px;height:12px;color:rgba(0,0,0,.54);font-size:12px;line-height:12px}.mdui-theme-layout-dark .mdui-textfield-input{color:#fff;border-bottom-color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-input::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark .mdui-textfield-input:not([disabled]):hover{border-bottom-color:#fff;-webkit-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff}.mdui-theme-layout-dark .mdui-textfield .mdui-icon{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-label{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-floating-label .mdui-textfield-label{color:rgba(255,255,255,.35)}.mdui-theme-layout-dark .mdui-textfield-error{color:#ff1744}.mdui-theme-layout-dark .mdui-textfield-helper{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-counter{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input,.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input:hover{border-bottom-color:#ff4081;-webkit-box-shadow:0 1px 0 0 #ff4081;box-shadow:0 1px 0 0 #ff4081}.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff4081}.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder,.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-label{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input{border-bottom-color:rgba(255,255,255,.7)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-textfield-input{color:#fff;border-bottom-color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-textfield-input::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.mdui-theme-layout-auto .mdui-textfield-input:not([disabled]):hover{border-bottom-color:#fff;-webkit-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff}.mdui-theme-layout-auto .mdui-textfield .mdui-icon{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-textfield-label{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-textfield-floating-label .mdui-textfield-label{color:rgba(255,255,255,.35)}.mdui-theme-layout-auto .mdui-textfield-error{color:#ff1744}.mdui-theme-layout-auto .mdui-textfield-helper{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-textfield-counter{color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input,.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input:hover{border-bottom-color:#ff4081;-webkit-box-shadow:0 1px 0 0 #ff4081;box-shadow:0 1px 0 0 #ff4081}.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ff4081}.mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder,.mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-label{color:rgba(255,255,255,.5)}.mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-input{color:rgba(255,255,255,.5)}.mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-input{border-bottom-color:rgba(255,255,255,.7)}}.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffab00;-webkit-box-shadow:0 1px 0 0 #ffab00;box-shadow:0 1px 0 0 #ffab00}.mdui-theme-accent-amber .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-label{color:rgba(255,171,0,.87)}.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffd740;-webkit-box-shadow:0 1px 0 0 #ffd740;box-shadow:0 1px 0 0 #ffd740}.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ffd740}@media (prefers-color-scheme:dark){.mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffd740;-webkit-box-shadow:0 1px 0 0 #ffd740;box-shadow:0 1px 0 0 #ffd740}.mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ffd740}}.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#2962ff;-webkit-box-shadow:0 1px 0 0 #2962ff;box-shadow:0 1px 0 0 #2962ff}.mdui-theme-accent-blue .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-label{color:rgba(41,98,255,.87)}.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#448aff;-webkit-box-shadow:0 1px 0 0 #448aff;box-shadow:0 1px 0 0 #448aff}.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#448aff}@media (prefers-color-scheme:dark){.mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#448aff;-webkit-box-shadow:0 1px 0 0 #448aff;box-shadow:0 1px 0 0 #448aff}.mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#448aff}}.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#00b8d4;-webkit-box-shadow:0 1px 0 0 #00b8d4;box-shadow:0 1px 0 0 #00b8d4}.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,184,212,.87)}.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#18ffff;-webkit-box-shadow:0 1px 0 0 #18ffff;box-shadow:0 1px 0 0 #18ffff}.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#18ffff}@media (prefers-color-scheme:dark){.mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#18ffff;-webkit-box-shadow:0 1px 0 0 #18ffff;box-shadow:0 1px 0 0 #18ffff}.mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#18ffff}}.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#dd2c00;-webkit-box-shadow:0 1px 0 0 #dd2c00;box-shadow:0 1px 0 0 #dd2c00}.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-label{color:rgba(221,44,0,.87)}.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff6e40;-webkit-box-shadow:0 1px 0 0 #ff6e40;box-shadow:0 1px 0 0 #ff6e40}.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff6e40}@media (prefers-color-scheme:dark){.mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff6e40;-webkit-box-shadow:0 1px 0 0 #ff6e40;box-shadow:0 1px 0 0 #ff6e40}.mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ff6e40}}.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#6200ea;-webkit-box-shadow:0 1px 0 0 #6200ea;box-shadow:0 1px 0 0 #6200ea}.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-label{color:rgba(98,0,234,.87)}.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#7c4dff;-webkit-box-shadow:0 1px 0 0 #7c4dff;box-shadow:0 1px 0 0 #7c4dff}.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#7c4dff}@media (prefers-color-scheme:dark){.mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#7c4dff;-webkit-box-shadow:0 1px 0 0 #7c4dff;box-shadow:0 1px 0 0 #7c4dff}.mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#7c4dff}}.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#00c853;-webkit-box-shadow:0 1px 0 0 #00c853;box-shadow:0 1px 0 0 #00c853}.mdui-theme-accent-green .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,200,83,.87)}.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#69f0ae;-webkit-box-shadow:0 1px 0 0 #69f0ae;box-shadow:0 1px 0 0 #69f0ae}.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#69f0ae}@media (prefers-color-scheme:dark){.mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#69f0ae;-webkit-box-shadow:0 1px 0 0 #69f0ae;box-shadow:0 1px 0 0 #69f0ae}.mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#69f0ae}}.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#304ffe;-webkit-box-shadow:0 1px 0 0 #304ffe;box-shadow:0 1px 0 0 #304ffe}.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-label{color:rgba(48,79,254,.87)}.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#536dfe;-webkit-box-shadow:0 1px 0 0 #536dfe;box-shadow:0 1px 0 0 #536dfe}.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#536dfe}@media (prefers-color-scheme:dark){.mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#536dfe;-webkit-box-shadow:0 1px 0 0 #536dfe;box-shadow:0 1px 0 0 #536dfe}.mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#536dfe}}.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#0091ea;-webkit-box-shadow:0 1px 0 0 #0091ea;box-shadow:0 1px 0 0 #0091ea}.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,145,234,.87)}.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#40c4ff;-webkit-box-shadow:0 1px 0 0 #40c4ff;box-shadow:0 1px 0 0 #40c4ff}.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#40c4ff}@media (prefers-color-scheme:dark){.mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#40c4ff;-webkit-box-shadow:0 1px 0 0 #40c4ff;box-shadow:0 1px 0 0 #40c4ff}.mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#40c4ff}}.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#64dd17;-webkit-box-shadow:0 1px 0 0 #64dd17;box-shadow:0 1px 0 0 #64dd17}.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-label{color:rgba(100,221,23,.87)}.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#b2ff59;-webkit-box-shadow:0 1px 0 0 #b2ff59;box-shadow:0 1px 0 0 #b2ff59}.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#b2ff59}@media (prefers-color-scheme:dark){.mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#b2ff59;-webkit-box-shadow:0 1px 0 0 #b2ff59;box-shadow:0 1px 0 0 #b2ff59}.mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#b2ff59}}.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#aeea00;-webkit-box-shadow:0 1px 0 0 #aeea00;box-shadow:0 1px 0 0 #aeea00}.mdui-theme-accent-lime .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-label{color:rgba(174,234,0,.87)}.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#eeff41;-webkit-box-shadow:0 1px 0 0 #eeff41;box-shadow:0 1px 0 0 #eeff41}.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#eeff41}@media (prefers-color-scheme:dark){.mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#eeff41;-webkit-box-shadow:0 1px 0 0 #eeff41;box-shadow:0 1px 0 0 #eeff41}.mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#eeff41}}.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff6d00;-webkit-box-shadow:0 1px 0 0 #ff6d00;box-shadow:0 1px 0 0 #ff6d00}.mdui-theme-accent-orange .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-label{color:rgba(255,109,0,.87)}.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffab40;-webkit-box-shadow:0 1px 0 0 #ffab40;box-shadow:0 1px 0 0 #ffab40}.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ffab40}@media (prefers-color-scheme:dark){.mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffab40;-webkit-box-shadow:0 1px 0 0 #ffab40;box-shadow:0 1px 0 0 #ffab40}.mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ffab40}}.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#c51162;-webkit-box-shadow:0 1px 0 0 #c51162;box-shadow:0 1px 0 0 #c51162}.mdui-theme-accent-pink .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-label{color:rgba(197,17,98,.87)}.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff4081;-webkit-box-shadow:0 1px 0 0 #ff4081;box-shadow:0 1px 0 0 #ff4081}.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff4081}@media (prefers-color-scheme:dark){.mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff4081;-webkit-box-shadow:0 1px 0 0 #ff4081;box-shadow:0 1px 0 0 #ff4081}.mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ff4081}}.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#a0f;-webkit-box-shadow:0 1px 0 0 #a0f;box-shadow:0 1px 0 0 #a0f}.mdui-theme-accent-purple .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-label{color:rgba(170,0,255,.87)}.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#e040fb;-webkit-box-shadow:0 1px 0 0 #e040fb;box-shadow:0 1px 0 0 #e040fb}.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#e040fb}@media (prefers-color-scheme:dark){.mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#e040fb;-webkit-box-shadow:0 1px 0 0 #e040fb;box-shadow:0 1px 0 0 #e040fb}.mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#e040fb}}.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#d50000;-webkit-box-shadow:0 1px 0 0 #d50000;box-shadow:0 1px 0 0 #d50000}.mdui-theme-accent-red .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-label{color:rgba(213,0,0,.87)}.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff5252;-webkit-box-shadow:0 1px 0 0 #ff5252;box-shadow:0 1px 0 0 #ff5252}.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff5252}@media (prefers-color-scheme:dark){.mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff5252;-webkit-box-shadow:0 1px 0 0 #ff5252;box-shadow:0 1px 0 0 #ff5252}.mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ff5252}}.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#00bfa5;-webkit-box-shadow:0 1px 0 0 #00bfa5;box-shadow:0 1px 0 0 #00bfa5}.mdui-theme-accent-teal .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,191,165,.87)}.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#64ffda;-webkit-box-shadow:0 1px 0 0 #64ffda;box-shadow:0 1px 0 0 #64ffda}.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#64ffda}@media (prefers-color-scheme:dark){.mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#64ffda;-webkit-box-shadow:0 1px 0 0 #64ffda;box-shadow:0 1px 0 0 #64ffda}.mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#64ffda}}.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffd600;-webkit-box-shadow:0 1px 0 0 #ffd600;box-shadow:0 1px 0 0 #ffd600}.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-label{color:rgba(255,214,0,.87)}.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff0;-webkit-box-shadow:0 1px 0 0 #ff0;box-shadow:0 1px 0 0 #ff0}.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff0}@media (prefers-color-scheme:dark){.mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff0;-webkit-box-shadow:0 1px 0 0 #ff0;box-shadow:0 1px 0 0 #ff0}.mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label{color:#ff0}}.mdui-checkbox{position:relative;display:inline-block;height:36px;padding-left:36px;line-height:36px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-checkbox input[type=checkbox]{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.mdui-checkbox-icon{position:absolute;top:9px;left:0;display:inline-block;width:18px;height:18px;vertical-align:middle;background-color:transparent;border:none;border-radius:18px;-webkit-transition:-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1)}.mdui-checkbox-icon::after{position:absolute;top:0;left:0;z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:18px;height:18px;border:2px solid rgba(0,0,0,.54);border-radius:2px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);content:' '}.mdui-checkbox-icon::before{position:absolute;top:2px;left:0;z-index:1;-webkit-box-sizing:border-box;box-sizing:border-box;width:8px;height:13px;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg) scale(0);transform:rotateZ(37deg) scale(0);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);content:' '}.mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after{background-color:#ff4081;border-color:#ff4081}.mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::before{-webkit-transform:rotateZ(37deg) scale(1);transform:rotateZ(37deg) scale(1);opacity:1}.mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ff4081;border-color:#ff4081}.mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::before{top:8px;left:3px;width:12px;height:0;border-right:none;border-bottom:2px solid #fff;border-radius:1px;-webkit-transform:rotateZ(0) scale(1);transform:rotateZ(0) scale(1);opacity:1}.mdui-checkbox input[type=checkbox]:disabled+.mdui-checkbox-icon::after{border-color:rgba(0,0,0,.26)}.mdui-checkbox input[type=checkbox]:disabled:checked+.mdui-checkbox-icon::after,.mdui-checkbox input[type=checkbox]:disabled:indeterminate+.mdui-checkbox-icon::after{background-color:rgba(0,0,0,.26)!important;border-color:transparent!important}.mdui-checkbox input[type=checkbox]:focus+.mdui-checkbox-icon,.mdui-checkbox:active input[type=checkbox]+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(0,0,0,.1);box-shadow:0 0 0 15px rgba(0,0,0,.1)}.mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ffd740;border-color:#ffd740}.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-amber .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-amber .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,215,64,.16);box-shadow:0 0 0 15px rgba(255,215,64,.16)}.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#448aff;border-color:#448aff}.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(68,138,255,.16);box-shadow:0 0 0 15px rgba(68,138,255,.16)}.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#18ffff;border-color:#18ffff}.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-cyan .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-cyan .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(24,255,255,.16);box-shadow:0 0 0 15px rgba(24,255,255,.16)}.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ff6e40;border-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,110,64,.16);box-shadow:0 0 0 15px rgba(255,110,64,.16)}.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#7c4dff;border-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(124,77,255,.16);box-shadow:0 0 0 15px rgba(124,77,255,.16)}.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#69f0ae;border-color:#69f0ae}.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(105,240,174,.16);box-shadow:0 0 0 15px rgba(105,240,174,.16)}.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#536dfe;border-color:#536dfe}.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-indigo .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-indigo .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(83,109,254,.16);box-shadow:0 0 0 15px rgba(83,109,254,.16)}.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#40c4ff;border-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-light-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(64,196,255,.16);box-shadow:0 0 0 15px rgba(64,196,255,.16)}.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#b2ff59;border-color:#b2ff59}.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-light-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(178,255,89,.16);box-shadow:0 0 0 15px rgba(178,255,89,.16)}.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#eeff41;border-color:#eeff41}.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-lime .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-lime .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(238,255,65,.16);box-shadow:0 0 0 15px rgba(238,255,65,.16)}.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ffab40;border-color:#ffab40}.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,171,64,.16);box-shadow:0 0 0 15px rgba(255,171,64,.16)}.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ff4081;border-color:#ff4081}.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-pink .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-pink .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#e040fb;border-color:#e040fb}.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(224,64,251,.16);box-shadow:0 0 0 15px rgba(224,64,251,.16)}.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ff5252;border-color:#ff5252}.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-red .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-red .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,82,82,.16);box-shadow:0 0 0 15px rgba(255,82,82,.16)}.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#64ffda;border-color:#64ffda}.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-teal .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-teal .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(100,255,218,.16);box-shadow:0 0 0 15px rgba(100,255,218,.16)}.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon::after,.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon::after{background-color:#ff0;border-color:#ff0}.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-yellow .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-yellow .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,0,.16);box-shadow:0 0 0 15px rgba(255,255,0,.16)}.mdui-theme-layout-dark .mdui-checkbox-icon::after{border-color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-checkbox-icon::before{border-right-color:#303030!important;border-bottom-color:#303030!important}.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled+.mdui-checkbox-icon::after{border-color:rgba(255,255,255,.3)}.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled:checked+.mdui-checkbox-icon::after,.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled:indeterminate+.mdui-checkbox-icon::after{background-color:rgba(255,255,255,.3)!important;border-color:transparent!important}.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:focus+.mdui-checkbox-icon,.mdui-theme-layout-dark .mdui-checkbox:active input[type=checkbox]+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,255,.1);box-shadow:0 0 0 15px rgba(255,255,255,.1)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-checkbox-icon::after{border-color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-checkbox-icon::before{border-right-color:#303030!important;border-bottom-color:#303030!important}.mdui-theme-layout-auto .mdui-checkbox input[type=checkbox]:disabled+.mdui-checkbox-icon::after{border-color:rgba(255,255,255,.3)}.mdui-theme-layout-auto .mdui-checkbox input[type=checkbox]:disabled:checked+.mdui-checkbox-icon::after,.mdui-theme-layout-auto .mdui-checkbox input[type=checkbox]:disabled:indeterminate+.mdui-checkbox-icon::after{background-color:rgba(255,255,255,.3)!important;border-color:transparent!important}.mdui-theme-layout-auto .mdui-checkbox input[type=checkbox]:focus+.mdui-checkbox-icon,.mdui-theme-layout-auto .mdui-checkbox:active input[type=checkbox]+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,255,.1);box-shadow:0 0 0 15px rgba(255,255,255,.1)}}.mdui-radio{position:relative;display:inline-block;height:36px;padding-left:36px;line-height:36px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-radio input{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.mdui-radio-icon{position:absolute;top:9px;left:0;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;width:18px;height:18px;vertical-align:middle;border:2px solid rgba(0,0,0,.54);border-radius:18px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1),box-shadow .14s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1),box-shadow .14s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1)}.mdui-radio-icon::before{position:absolute;top:0;left:0;width:14px;height:14px;background-color:#ff4081;border-radius:14px;-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);content:' '}.mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff4081}.mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{-webkit-transform:scale(.68);transform:scale(.68);opacity:1}.mdui-radio input[type=radio]:disabled+.mdui-radio-icon{border-color:rgba(0,0,0,.26)!important}.mdui-radio input[type=radio]:disabled:checked+.mdui-radio-icon::before{background-color:rgba(0,0,0,.26)!important}.mdui-radio input[type=radio]:focus+.mdui-radio-icon,.mdui-radio:active input[type=radio]+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(0,0,0,.1);box-shadow:0 0 0 15px rgba(0,0,0,.1)}.mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-amber .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ffd740}.mdui-theme-accent-amber .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#ffd740}.mdui-theme-accent-amber .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-amber .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,215,64,.16);box-shadow:0 0 0 15px rgba(255,215,64,.16)}.mdui-theme-accent-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#448aff}.mdui-theme-accent-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#448aff}.mdui-theme-accent-blue .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-blue .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(68,138,255,.16);box-shadow:0 0 0 15px rgba(68,138,255,.16)}.mdui-theme-accent-cyan .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#18ffff}.mdui-theme-accent-cyan .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#18ffff}.mdui-theme-accent-cyan .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-cyan .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(24,255,255,.16);box-shadow:0 0 0 15px rgba(24,255,255,.16)}.mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-deep-orange .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,110,64,.16);box-shadow:0 0 0 15px rgba(255,110,64,.16)}.mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-deep-purple .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(124,77,255,.16);box-shadow:0 0 0 15px rgba(124,77,255,.16)}.mdui-theme-accent-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#69f0ae}.mdui-theme-accent-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#69f0ae}.mdui-theme-accent-green .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-green .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(105,240,174,.16);box-shadow:0 0 0 15px rgba(105,240,174,.16)}.mdui-theme-accent-indigo .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#536dfe}.mdui-theme-accent-indigo .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#536dfe}.mdui-theme-accent-indigo .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-indigo .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(83,109,254,.16);box-shadow:0 0 0 15px rgba(83,109,254,.16)}.mdui-theme-accent-light-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-light-blue .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(64,196,255,.16);box-shadow:0 0 0 15px rgba(64,196,255,.16)}.mdui-theme-accent-light-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#b2ff59}.mdui-theme-accent-light-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#b2ff59}.mdui-theme-accent-light-green .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-light-green .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(178,255,89,.16);box-shadow:0 0 0 15px rgba(178,255,89,.16)}.mdui-theme-accent-lime .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#eeff41}.mdui-theme-accent-lime .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#eeff41}.mdui-theme-accent-lime .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-lime .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(238,255,65,.16);box-shadow:0 0 0 15px rgba(238,255,65,.16)}.mdui-theme-accent-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ffab40}.mdui-theme-accent-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#ffab40}.mdui-theme-accent-orange .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-orange .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,171,64,.16);box-shadow:0 0 0 15px rgba(255,171,64,.16)}.mdui-theme-accent-pink .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff4081}.mdui-theme-accent-pink .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#ff4081}.mdui-theme-accent-pink .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-pink .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#e040fb}.mdui-theme-accent-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#e040fb}.mdui-theme-accent-purple .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-purple .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(224,64,251,.16);box-shadow:0 0 0 15px rgba(224,64,251,.16)}.mdui-theme-accent-red .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff5252}.mdui-theme-accent-red .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#ff5252}.mdui-theme-accent-red .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-red .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,82,82,.16);box-shadow:0 0 0 15px rgba(255,82,82,.16)}.mdui-theme-accent-teal .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#64ffda}.mdui-theme-accent-teal .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#64ffda}.mdui-theme-accent-teal .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-teal .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(100,255,218,.16);box-shadow:0 0 0 15px rgba(100,255,218,.16)}.mdui-theme-accent-yellow .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff0}.mdui-theme-accent-yellow .mdui-radio input[type=radio]:checked+.mdui-radio-icon::before{background-color:#ff0}.mdui-theme-accent-yellow .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-yellow .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,0,.16);box-shadow:0 0 0 15px rgba(255,255,0,.16)}.mdui-theme-layout-dark .mdui-radio-icon{border-color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-radio input[type=radio]:disabled+.mdui-radio-icon{border-color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-radio input[type=radio]:disabled:checked+.mdui-radio-icon::before{background-color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-radio input[type=radio]:focus+.mdui-radio-icon,.mdui-theme-layout-dark .mdui-radio:active input[type=radio]+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,255,.1);box-shadow:0 0 0 15px rgba(255,255,255,.1)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-radio-icon{border-color:rgba(255,255,255,.7)}.mdui-theme-layout-auto .mdui-radio input[type=radio]:disabled+.mdui-radio-icon{border-color:rgba(255,255,255,.3)!important}.mdui-theme-layout-auto .mdui-radio input[type=radio]:disabled:checked+.mdui-radio-icon::before{background-color:rgba(255,255,255,.3)!important}.mdui-theme-layout-auto .mdui-radio input[type=radio]:focus+.mdui-radio-icon,.mdui-theme-layout-auto .mdui-radio:active input[type=radio]+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,255,.1);box-shadow:0 0 0 15px rgba(255,255,255,.1)}}.mdui-switch{display:inline-block;height:36px;line-height:36px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-switch input{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.mdui-switch-icon{position:relative;display:inline-block;width:36px;height:14px;vertical-align:middle;background-color:rgba(0,0,0,.38);border-radius:14px;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1)}.mdui-switch-icon::before{position:absolute;top:-3px;left:-3px;display:inline-block;width:20px;height:20px;background-color:#fafafa;border-radius:20px;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1),background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1),background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);content:' ';-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,64,129,.5)}.mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{left:20px;background-color:#ff4081}.mdui-switch input[type=checkbox]:focus+.mdui-switch-icon::before,.mdui-switch:active input[type=checkbox]+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(0,0,0,.1);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(0,0,0,.1)}.mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16)}.mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon{background-color:rgba(0,0,0,.12)!important}.mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon::before{background-color:#bdbdbd!important}.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,215,64,.5)}.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffd740}.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-amber .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,215,64,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,215,64,.16)}.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(68,138,255,.5)}.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#448aff}.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-blue .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(68,138,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(68,138,255,.16)}.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(24,255,255,.5)}.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#18ffff}.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-cyan .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(24,255,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(24,255,255,.16)}.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,110,64,.5)}.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-deep-orange .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,110,64,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,110,64,.16)}.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(124,77,255,.5)}.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-deep-purple .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(124,77,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(124,77,255,.16)}.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(105,240,174,.5)}.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#69f0ae}.mdui-theme-accent-green .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-green .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(105,240,174,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(105,240,174,.16)}.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(83,109,254,.5)}.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#536dfe}.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-indigo .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(83,109,254,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(83,109,254,.16)}.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(64,196,255,.5)}.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-light-blue .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(64,196,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(64,196,255,.16)}.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(178,255,89,.5)}.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#b2ff59}.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-light-green .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(178,255,89,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(178,255,89,.16)}.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(238,255,65,.5)}.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#eeff41}.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-lime .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(238,255,65,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(238,255,65,.16)}.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,171,64,.5)}.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffab40}.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-orange .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,171,64,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,171,64,.16)}.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,64,129,.5)}.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff4081}.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-pink .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(224,64,251,.5)}.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#e040fb}.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-purple .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(224,64,251,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(224,64,251,.16)}.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,82,82,.5)}.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff5252}.mdui-theme-accent-red .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-red .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,82,82,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,82,82,.16)}.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(100,255,218,.5)}.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#64ffda}.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-teal .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(100,255,218,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(100,255,218,.16)}.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,255,0,.5)}.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff0}.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon::before,.mdui-theme-accent-yellow .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,0,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,0,.16)}.mdui-theme-layout-dark .mdui-switch-icon{background-color:rgba(255,255,255,.3)}.mdui-theme-layout-dark .mdui-switch-icon::before{background-color:#bdbdbd}.mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,229,127,.5)}.mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffe57f}.mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(130,177,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#82b1ff}.mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(132,255,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#84ffff}.mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,158,128,.5)}.mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff9e80}.mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(179,136,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#b388ff}.mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(185,246,202,.5)}.mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#b9f6ca}.mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(140,158,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#8c9eff}.mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(128,216,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#80d8ff}.mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(204,255,144,.5)}.mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ccff90}.mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(244,255,129,.5)}.mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#f4ff81}.mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,209,128,.5)}.mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffd180}.mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,128,171,.5)}.mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff80ab}.mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(234,128,252,.5)}.mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ea80fc}.mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,138,128,.5)}.mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff8a80}.mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(167,255,235,.5)}.mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#a7ffeb}.mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,255,141,.5)}.mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffff8d}.mdui-theme-layout-dark .mdui-switch input[type=checkbox]:focus+.mdui-switch-icon::before,.mdui-theme-layout-dark .mdui-switch:active input[type=checkbox]+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,255,.1);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,255,.1)}.mdui-theme-layout-dark .mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon{background-color:rgba(255,255,255,.1)!important}.mdui-theme-layout-dark .mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon::before{background-color:#424242!important}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-switch-icon{background-color:rgba(255,255,255,.3)}.mdui-theme-layout-auto .mdui-switch-icon::before{background-color:#bdbdbd}.mdui-theme-layout-auto.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,229,127,.5)}.mdui-theme-layout-auto.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffe57f}.mdui-theme-layout-auto.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(130,177,255,.5)}.mdui-theme-layout-auto.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#82b1ff}.mdui-theme-layout-auto.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(132,255,255,.5)}.mdui-theme-layout-auto.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#84ffff}.mdui-theme-layout-auto.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,158,128,.5)}.mdui-theme-layout-auto.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff9e80}.mdui-theme-layout-auto.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(179,136,255,.5)}.mdui-theme-layout-auto.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#b388ff}.mdui-theme-layout-auto.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(185,246,202,.5)}.mdui-theme-layout-auto.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#b9f6ca}.mdui-theme-layout-auto.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(140,158,255,.5)}.mdui-theme-layout-auto.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#8c9eff}.mdui-theme-layout-auto.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(128,216,255,.5)}.mdui-theme-layout-auto.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#80d8ff}.mdui-theme-layout-auto.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(204,255,144,.5)}.mdui-theme-layout-auto.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ccff90}.mdui-theme-layout-auto.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(244,255,129,.5)}.mdui-theme-layout-auto.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#f4ff81}.mdui-theme-layout-auto.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,209,128,.5)}.mdui-theme-layout-auto.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffd180}.mdui-theme-layout-auto.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,128,171,.5)}.mdui-theme-layout-auto.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff80ab}.mdui-theme-layout-auto.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(234,128,252,.5)}.mdui-theme-layout-auto.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ea80fc}.mdui-theme-layout-auto.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,138,128,.5)}.mdui-theme-layout-auto.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ff8a80}.mdui-theme-layout-auto.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(167,255,235,.5)}.mdui-theme-layout-auto.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#a7ffeb}.mdui-theme-layout-auto.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,255,141,.5)}.mdui-theme-layout-auto.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon::before{background-color:#ffff8d}.mdui-theme-layout-auto .mdui-switch input[type=checkbox]:focus+.mdui-switch-icon::before,.mdui-theme-layout-auto .mdui-switch:active input[type=checkbox]+.mdui-switch-icon::before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,255,.1);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,255,.1)}.mdui-theme-layout-auto .mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon{background-color:rgba(255,255,255,.1)!important}.mdui-theme-layout-auto .mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon::before{background-color:#424242!important}}.mdui-slider{position:relative;display:block;width:100%;height:36px}.mdui-slider input[type=range]{position:absolute;top:50%;z-index:2;width:100%;height:20px;margin-top:-10px;cursor:pointer;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mdui-slider-fill,.mdui-slider-track{position:absolute;top:50%;-webkit-box-sizing:border-box;box-sizing:border-box;height:2px;margin-top:-1px}.mdui-slider-fill::before,.mdui-slider-track::before{display:block;width:100%;height:100%;content:' '}.mdui-slider-track{right:0}.mdui-slider-track::before{background-color:#bdbdbd;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1)}.mdui-slider-fill{left:0}.mdui-slider-fill::before{background-color:#ff4081}.mdui-slider-thumb{position:absolute;top:50%;-webkit-box-sizing:border-box;box-sizing:border-box;width:12px;height:12px;margin-top:-6px;background-color:#ff4081;border:2px solid #ff4081;border-radius:50%;-webkit-transform:translate(-50%);transform:translate(-50%);-webkit-transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1);transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);will-change:background,border-color,transform,border-radius}.mdui-theme-accent-amber .mdui-slider-fill::before{background-color:#ffd740}.mdui-theme-accent-amber .mdui-slider-thumb{background-color:#ffd740;border:2px solid #ffd740}.mdui-theme-accent-blue .mdui-slider-fill::before{background-color:#448aff}.mdui-theme-accent-blue .mdui-slider-thumb{background-color:#448aff;border:2px solid #448aff}.mdui-theme-accent-cyan .mdui-slider-fill::before{background-color:#18ffff}.mdui-theme-accent-cyan .mdui-slider-thumb{background-color:#18ffff;border:2px solid #18ffff}.mdui-theme-accent-deep-orange .mdui-slider-fill::before{background-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-slider-thumb{background-color:#ff6e40;border:2px solid #ff6e40}.mdui-theme-accent-deep-purple .mdui-slider-fill::before{background-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-slider-thumb{background-color:#7c4dff;border:2px solid #7c4dff}.mdui-theme-accent-green .mdui-slider-fill::before{background-color:#69f0ae}.mdui-theme-accent-green .mdui-slider-thumb{background-color:#69f0ae;border:2px solid #69f0ae}.mdui-theme-accent-indigo .mdui-slider-fill::before{background-color:#536dfe}.mdui-theme-accent-indigo .mdui-slider-thumb{background-color:#536dfe;border:2px solid #536dfe}.mdui-theme-accent-light-blue .mdui-slider-fill::before{background-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-slider-thumb{background-color:#40c4ff;border:2px solid #40c4ff}.mdui-theme-accent-light-green .mdui-slider-fill::before{background-color:#b2ff59}.mdui-theme-accent-light-green .mdui-slider-thumb{background-color:#b2ff59;border:2px solid #b2ff59}.mdui-theme-accent-lime .mdui-slider-fill::before{background-color:#eeff41}.mdui-theme-accent-lime .mdui-slider-thumb{background-color:#eeff41;border:2px solid #eeff41}.mdui-theme-accent-orange .mdui-slider-fill::before{background-color:#ffab40}.mdui-theme-accent-orange .mdui-slider-thumb{background-color:#ffab40;border:2px solid #ffab40}.mdui-theme-accent-pink .mdui-slider-fill::before{background-color:#ff4081}.mdui-theme-accent-pink .mdui-slider-thumb{background-color:#ff4081;border:2px solid #ff4081}.mdui-theme-accent-purple .mdui-slider-fill::before{background-color:#e040fb}.mdui-theme-accent-purple .mdui-slider-thumb{background-color:#e040fb;border:2px solid #e040fb}.mdui-theme-accent-red .mdui-slider-fill::before{background-color:#ff5252}.mdui-theme-accent-red .mdui-slider-thumb{background-color:#ff5252;border:2px solid #ff5252}.mdui-theme-accent-teal .mdui-slider-fill::before{background-color:#64ffda}.mdui-theme-accent-teal .mdui-slider-thumb{background-color:#64ffda;border:2px solid #64ffda}.mdui-theme-accent-yellow .mdui-slider-fill::before{background-color:#ff0}.mdui-theme-accent-yellow .mdui-slider-thumb{background-color:#ff0;border:2px solid #ff0}.mdui-slider-focus .mdui-slider-track::before{background-color:#9e9e9e}.mdui-slider-focus .mdui-slider-thumb{-webkit-transform:translate(-50%) scale(1.6);transform:translate(-50%) scale(1.6)}.mdui-slider-zero .mdui-slider-thumb{background-color:#fff;border-color:#bdbdbd}.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{border-color:#9e9e9e}.mdui-slider-disabled input[type=range]{cursor:default}.mdui-slider-disabled .mdui-slider-track::before{background-color:#bdbdbd}.mdui-slider-disabled .mdui-slider-fill::before{background-color:#bdbdbd}.mdui-slider-disabled .mdui-slider-thumb{background-color:#bdbdbd;border-color:transparent!important;-webkit-transform:translate(-50%) scale(.72);transform:translate(-50%) scale(.72)}.mdui-slider-discrete .mdui-slider-thumb{width:30px;height:30px;margin-top:-15px;margin-left:-15px;border:none;-webkit-transform:rotate(-45deg) scale(.4);transform:rotate(-45deg) scale(.4)}.mdui-slider-discrete .mdui-slider-thumb span{position:absolute;top:9px;left:-1px;width:100%;color:#fff;font-size:12px;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0;-webkit-transition:opacity .25s cubic-bezier(.4,0,.2,1);transition:opacity .25s cubic-bezier(.4,0,.2,1)}.mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb{border-radius:15px 15px 15px 0;-webkit-transform:rotate(-45deg) scale(1) translate(22px,-22px);transform:rotate(-45deg) scale(1) translate(22px,-22px)}.mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb span{opacity:1}.mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb{background-color:#323232}.mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{background-color:#bdbdbd}.mdui-slider-discrete.mdui-slider-disabled .mdui-slider-thumb{-webkit-transform:rotate(-45deg) scale(.288);transform:rotate(-45deg) scale(.288)}.mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb{background-color:#bdbdbd}.mdui-theme-layout-dark .mdui-slider-track::before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-focus .mdui-slider-track::before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-zero .mdui-slider-thumb{background-color:#303030;border-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{border-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-track::before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-fill::before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-thumb{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb{background-color:#fefefe}.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{background-color:#5c5c5c}.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb{background-color:#4c4c4c}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-slider-track::before{background-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-focus .mdui-slider-track::before{background-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-zero .mdui-slider-thumb{background-color:#303030;border-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{border-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-disabled .mdui-slider-track::before{background-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-disabled .mdui-slider-fill::before{background-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-disabled .mdui-slider-thumb{background-color:#4c4c4c}.mdui-theme-layout-auto .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb{background-color:#fefefe}.mdui-theme-layout-auto .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{background-color:#5c5c5c}.mdui-theme-layout-auto .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb{background-color:#4c4c4c}}.mdui-btn,.mdui-fab{position:relative;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:88px;height:36px;margin:0;padding:0 16px;overflow:hidden;color:inherit;font-weight:500;font-size:14px;line-height:36px;letter-spacing:.04em;white-space:nowrap;text-align:center;text-transform:uppercase;text-decoration:none;vertical-align:middle;background:0 0;border:none;border-radius:2px;outline:0;cursor:pointer;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1);transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1);transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1);transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:manipulation;touch-action:manipulation;will-change:box-shadow;zoom:1;-webkit-user-drag:none}.mdui-btn:hover,.mdui-fab:hover{background-color:rgba(0,0,0,.1)}.mdui-btn:not(.mdui-ripple):active,.mdui-fab:not(.mdui-ripple):active{background-color:rgba(0,0,0,.165)}.mdui-btn[class*=mdui-color-]:hover,.mdui-fab[class*=mdui-color-]:hover{opacity:.87}.mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active,.mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active{opacity:.76}.mdui-btn .mdui-icon-left,.mdui-btn .mdui-icon-left::before,.mdui-btn .mdui-icon-right,.mdui-btn .mdui-icon-right::before{height:inherit;font-size:1.3em;line-height:inherit}.mdui-btn .mdui-icon-left{float:left;margin-right:.4em}.mdui-btn .mdui-icon-right{float:right;margin-left:.4em}input.mdui-btn[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none}.mdui-btn-raised{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-btn-raised:hover{-webkit-box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mdui-btn-raised:active{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-btn[disabled],.mdui-btn[disabled]:active,.mdui-btn[disabled]:focus,.mdui-btn[disabled]:hover,.mdui-fab[disabled],.mdui-fab[disabled]:active,.mdui-fab[disabled]:focus,.mdui-fab[disabled]:hover{color:rgba(0,0,0,.26)!important;background-color:transparent!important;cursor:default!important;opacity:1!important;-webkit-box-shadow:none!important;box-shadow:none!important}.mdui-btn[disabled] .mdui-icon,.mdui-btn[disabled]:active .mdui-icon,.mdui-btn[disabled]:focus .mdui-icon,.mdui-btn[disabled]:hover .mdui-icon,.mdui-fab[disabled] .mdui-icon,.mdui-fab[disabled]:active .mdui-icon,.mdui-fab[disabled]:focus .mdui-icon,.mdui-fab[disabled]:hover .mdui-icon{color:rgba(0,0,0,.26)!important}.mdui-btn-raised[disabled],.mdui-btn-raised[disabled]:active,.mdui-btn-raised[disabled]:focus,.mdui-btn-raised[disabled]:hover,.mdui-fab[disabled],.mdui-fab[disabled]:active,.mdui-fab[disabled]:focus,.mdui-fab[disabled]:hover{background-color:rgba(0,0,0,.12)!important;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important}.mdui-btn-bold{font-weight:700}.mdui-btn-icon{width:36px;min-width:36px;height:36px;margin-right:0;margin-left:0;padding:0;overflow:hidden;font-size:24px;line-height:normal;border-radius:50%}.mdui-btn-icon .mdui-icon{position:absolute;top:50%;left:50%;width:24px;line-height:24px;-webkit-transform:translate(-12px,-12px);transform:translate(-12px,-12px)}.mdui-btn-icon.mdui-ripple{-webkit-transform:translateZ(0);transform:translateZ(0)}.mdui-btn-block{display:block;width:100%}.mdui-btn-dense{height:32px;font-size:13px;line-height:32px}.mdui-btn-dense.mdui-btn-icon{width:32px;min-width:32px}.mdui-btn-group{position:relative;display:inline-block;vertical-align:middle}.mdui-btn-group .mdui-btn{float:left;min-width:inherit;padding:0 12px;color:rgba(0,0,0,.54);border-radius:0}.mdui-btn-group .mdui-btn::before{position:absolute;top:0;bottom:0;left:0;border-left:1px solid transparent;content:' '}.mdui-btn-group .mdui-btn:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.mdui-btn-group .mdui-btn:first-child::before{border-left:none}.mdui-btn-group .mdui-btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.mdui-btn-group .mdui-btn.mdui-btn-active{color:rgba(0,0,0,.87);background-color:rgba(0,0,0,.215)}.mdui-btn-group .mdui-btn.mdui-btn-active+.mdui-btn-active::before{border-left:1px solid rgba(0,0,0,.145)}.mdui-theme-layout-dark .mdui-btn:hover,.mdui-theme-layout-dark .mdui-fab:hover{background-color:rgba(255,255,255,.1)}.mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple):active,.mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple):active{background-color:rgba(255,255,255,.165)}.mdui-theme-layout-dark .mdui-btn[class*=mdui-color-]:hover,.mdui-theme-layout-dark .mdui-fab[class*=mdui-color-]:hover{opacity:.87}.mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active,.mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active{opacity:.76}.mdui-theme-layout-dark .mdui-btn[disabled],.mdui-theme-layout-dark .mdui-btn[disabled]:active,.mdui-theme-layout-dark .mdui-btn[disabled]:focus,.mdui-theme-layout-dark .mdui-btn[disabled]:hover,.mdui-theme-layout-dark .mdui-fab[disabled],.mdui-theme-layout-dark .mdui-fab[disabled]:active,.mdui-theme-layout-dark .mdui-fab[disabled]:focus,.mdui-theme-layout-dark .mdui-fab[disabled]:hover{color:rgba(255,255,255,.3)!important;background-color:transparent!important}.mdui-theme-layout-dark .mdui-btn[disabled] .mdui-icon,.mdui-theme-layout-dark .mdui-btn[disabled]:active .mdui-icon,.mdui-theme-layout-dark .mdui-btn[disabled]:focus .mdui-icon,.mdui-theme-layout-dark .mdui-btn[disabled]:hover .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled] .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled]:active .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled]:focus .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled]:hover .mdui-icon{color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-btn-raised[disabled],.mdui-theme-layout-dark .mdui-btn-raised[disabled]:active,.mdui-theme-layout-dark .mdui-btn-raised[disabled]:focus,.mdui-theme-layout-dark .mdui-btn-raised[disabled]:hover,.mdui-theme-layout-dark .mdui-fab[disabled],.mdui-theme-layout-dark .mdui-fab[disabled]:active,.mdui-theme-layout-dark .mdui-fab[disabled]:focus,.mdui-theme-layout-dark .mdui-fab[disabled]:hover{background-color:rgba(255,255,255,.12)!important}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-btn:hover,.mdui-theme-layout-auto .mdui-fab:hover{background-color:rgba(255,255,255,.1)}.mdui-theme-layout-auto .mdui-btn:not(.mdui-ripple):active,.mdui-theme-layout-auto .mdui-fab:not(.mdui-ripple):active{background-color:rgba(255,255,255,.165)}.mdui-theme-layout-auto .mdui-btn[class*=mdui-color-]:hover,.mdui-theme-layout-auto .mdui-fab[class*=mdui-color-]:hover{opacity:.87}.mdui-theme-layout-auto .mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active,.mdui-theme-layout-auto .mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active{opacity:.76}.mdui-theme-layout-auto .mdui-btn[disabled],.mdui-theme-layout-auto .mdui-btn[disabled]:active,.mdui-theme-layout-auto .mdui-btn[disabled]:focus,.mdui-theme-layout-auto .mdui-btn[disabled]:hover,.mdui-theme-layout-auto .mdui-fab[disabled],.mdui-theme-layout-auto .mdui-fab[disabled]:active,.mdui-theme-layout-auto .mdui-fab[disabled]:focus,.mdui-theme-layout-auto .mdui-fab[disabled]:hover{color:rgba(255,255,255,.3)!important;background-color:transparent!important}.mdui-theme-layout-auto .mdui-btn[disabled] .mdui-icon,.mdui-theme-layout-auto .mdui-btn[disabled]:active .mdui-icon,.mdui-theme-layout-auto .mdui-btn[disabled]:focus .mdui-icon,.mdui-theme-layout-auto .mdui-btn[disabled]:hover .mdui-icon,.mdui-theme-layout-auto .mdui-fab[disabled] .mdui-icon,.mdui-theme-layout-auto .mdui-fab[disabled]:active .mdui-icon,.mdui-theme-layout-auto .mdui-fab[disabled]:focus .mdui-icon,.mdui-theme-layout-auto .mdui-fab[disabled]:hover .mdui-icon{color:rgba(255,255,255,.3)!important}.mdui-theme-layout-auto .mdui-btn-raised[disabled],.mdui-theme-layout-auto .mdui-btn-raised[disabled]:active,.mdui-theme-layout-auto .mdui-btn-raised[disabled]:focus,.mdui-theme-layout-auto .mdui-btn-raised[disabled]:hover,.mdui-theme-layout-auto .mdui-fab[disabled],.mdui-theme-layout-auto .mdui-fab[disabled]:active,.mdui-theme-layout-auto .mdui-fab[disabled]:focus,.mdui-theme-layout-auto .mdui-fab[disabled]:hover{background-color:rgba(255,255,255,.12)!important}}.mdui-fab{width:56px;min-width:56px;height:56px;margin:auto;padding:0!important;overflow:hidden;font-size:24px;line-height:normal!important;border-radius:50%;-webkit-box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mdui-fab:hover{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-fab:active{-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12);box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mdui-fab .mdui-icon{position:absolute;top:0;left:0;width:24px;margin-top:16px;margin-left:16px;line-height:24px}.mdui-fab-mini{width:40px;min-width:40px;height:40px}.mdui-fab-mini .mdui-icon{margin-top:8px;margin-left:8px}.mdui-fab-fixed,.mdui-fab-wrapper{position:fixed!important;right:16px;bottom:16px}@media (min-width:1024px){.mdui-fab-fixed,.mdui-fab-wrapper{right:24px;bottom:24px}}.mdui-fab-wrapper{position:relative;z-index:4000;width:56px;height:56px;padding-top:8px;text-align:center}.mdui-fab-wrapper>.mdui-fab .mdui-icon:not(.mdui-fab-opened){opacity:1;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);will-change:opacity,transform}.mdui-fab-wrapper>.mdui-fab .mdui-icon.mdui-fab-opened{-webkit-transform:rotate(225deg);transform:rotate(225deg);opacity:0;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);will-change:opacity,transform}.mdui-fab-wrapper>.mdui-fab.mdui-fab-opened .mdui-icon:not(.mdui-fab-opened){-webkit-transform:rotate(225deg);transform:rotate(225deg);opacity:0}.mdui-fab-wrapper>.mdui-fab.mdui-fab-opened .mdui-icon.mdui-fab-opened{-webkit-transform:rotate(360deg);transform:rotate(360deg);opacity:1}.mdui-fab-wrapper>.mdui-fab-mini{margin-top:8px}.mdui-fab-wrapper .mdui-fab-dial{position:absolute;right:0;bottom:64px;left:0;height:0;text-align:center;visibility:visible}.mdui-fab-wrapper .mdui-fab-dial .mdui-fab{margin:8px 0;-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-transition:color .2s cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform 150ms cubic-bezier(.4,0,.2,1);transition:color .2s cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform 150ms cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),color .2s cubic-bezier(.4,0,.2,1),transform 150ms cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),color .2s cubic-bezier(.4,0,.2,1),transform 150ms cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform 150ms cubic-bezier(.4,0,.2,1)}.mdui-fab-wrapper .mdui-fab-dial.mdui-fab-dial-show .mdui-fab{-webkit-transform:scale(1);transform:scale(1);opacity:1}.mdui-fab,.mdui-fab-mini,.mdui-fab-wrapper{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);-webkit-transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s;transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s;transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1),transform .2s;transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1),transform .2s,-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s;will-change:transform}.mdui-fab-mini.mdui-fab-hide,.mdui-fab-wrapper.mdui-fab-hide,.mdui-fab.mdui-fab-hide{-webkit-transform:scale(0) translateZ(0);transform:scale(0) translateZ(0)}.mdui-select{position:relative;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;max-width:100%;height:36px;padding-right:24px;padding-left:0;font-size:16px;font-family:Roboto,Noto,Helvetica,Arial,sans-serif;vertical-align:middle;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' opacity='.54'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right center;border:none;border-bottom:1px solid rgba(0,0,0,.12);outline:0;cursor:pointer;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:background-color,background-position-x,-webkit-box-shadow;transition-property:background-color,background-position-x,-webkit-box-shadow;transition-property:background-color,box-shadow,background-position-x;transition-property:background-color,box-shadow,background-position-x,-webkit-box-shadow;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:background-color,box-shadow,background-position-x}.mdui-select.mdui-select-open{border-bottom:none}.mdui-select-position-top{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' opacity='.54'/%3E%3C/svg%3E")}.mdui-select-open.mdui-select-position-bottom,.mdui-select-open.mdui-select-position-top{z-index:99999;background-color:#fff;background-position-x:calc(100% - 12px);border-radius:2px}.mdui-select-open.mdui-select-position-top{border-top:1px solid rgba(0,0,0,.12);border-bottom:2px solid transparent;border-top-left-radius:0;border-top-right-radius:0;-webkit-box-shadow:0 10px 10px -3px rgba(0,0,0,.2),0 0 14px 1px rgba(0,0,0,.14),0 -7px 24px 2px rgba(0,0,0,.12);box-shadow:0 10px 10px -3px rgba(0,0,0,.2),0 0 14px 1px rgba(0,0,0,.14),0 -7px 24px 2px rgba(0,0,0,.12)}.mdui-select-open.mdui-select-position-top .mdui-select-menu{border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:0 -4px 4px -2px rgba(0,0,0,.06),8px 0 8px -4px rgba(0,0,0,.12),-8px 0 8px -4px rgba(0,0,0,.12);box-shadow:0 -4px 4px -2px rgba(0,0,0,.06),8px 0 8px -4px rgba(0,0,0,.12),-8px 0 8px -4px rgba(0,0,0,.12)}.mdui-select-open.mdui-select-position-bottom{border-bottom:1px solid rgba(0,0,0,.12);border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-select-open.mdui-select-position-bottom .mdui-select-menu{border-top-left-radius:0;border-top-right-radius:0;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 9px 9px 1px rgba(0,0,0,.14),0 8px 8px 2px rgba(0,0,0,.06);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 9px 9px 1px rgba(0,0,0,.14),0 8px 8px 2px rgba(0,0,0,.06)}.mdui-select-selected{position:absolute;top:50%;right:24px;left:0;display:block;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:left .2s cubic-bezier(0,0,.2,1);transition:left .2s cubic-bezier(0,0,.2,1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-select-open .mdui-select-selected{right:32px;left:16px}.mdui-select-open.mdui-select-position-auto .mdui-select-selected{visibility:hidden}.mdui-select-menu{position:relative;z-index:99999;-webkit-box-sizing:border-box;box-sizing:border-box;height:36px;margin:0 -24px 0 0;overflow-y:scroll;color:rgba(0,0,0,.87);background-color:#fff;border-radius:2px;-webkit-transform:scale(1,0);transform:scale(1,0);visibility:hidden;cursor:default;opacity:0;-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity,visibility,-webkit-transform;transition-property:opacity,visibility,-webkit-transform;transition-property:transform,opacity,visibility;transition-property:transform,opacity,visibility,-webkit-transform;will-change:transform,opacity,visibility;-webkit-overflow-scrolling:touch;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-select-open .mdui-select-menu{overflow-y:hidden;-webkit-transform:scale(1,1);transform:scale(1,1);visibility:visible;opacity:1}.mdui-select-closing .mdui-select-menu{overflow-y:hidden;-webkit-box-shadow:none;box-shadow:none;-webkit-transform:scale(1,1);transform:scale(1,1);visibility:visible;opacity:0}.mdui-select-menu-item{height:48px;padding:0 16px;line-height:48px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-select-menu-item:hover{background-color:#eee}.mdui-select-menu-item:first-child{margin-top:8px}.mdui-select-menu-item:last-child{margin-bottom:8px}.mdui-select-menu-item[disabled]{color:rgba(0,0,0,.38)!important;cursor:default}.mdui-select-menu-item[disabled]:hover{background-color:inherit!important}.mdui-select-menu-item[selected]{color:#ff4081}select.mdui-select{background-color:transparent}select.mdui-select option{color:rgba(0,0,0,.87)}select.mdui-select::-ms-expand{display:none}select.mdui-select[multiple]{height:auto;padding:0;font-size:15px;background-color:#fff;background-image:none;border:1px solid rgba(0,0,0,.38);cursor:default}select.mdui-select[multiple] optgroup{margin:8px 0 0 0;padding:0 0 0 16px;color:rgba(0,0,0,.38)}select.mdui-select[multiple] optgroup:last-child{margin-bottom:8px}select.mdui-select[multiple] optgroup:not(:first-child){padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}select.mdui-select[multiple] option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:32px;margin:0 0 0 -16px;padding:0 16px;color:rgba(0,0,0,.87)}select.mdui-select[multiple] option:first-child{margin-top:8px}select.mdui-select[multiple] option:last-child{margin-bottom:8px}.mdui-theme-accent-amber .mdui-select-menu-item[selected]{color:#ffc107}.mdui-theme-accent-blue .mdui-select-menu-item[selected]{color:#2196f3}.mdui-theme-accent-cyan .mdui-select-menu-item[selected]{color:#00bcd4}.mdui-theme-accent-deep-orange .mdui-select-menu-item[selected]{color:#ff5722}.mdui-theme-accent-deep-purple .mdui-select-menu-item[selected]{color:#673ab7}.mdui-theme-accent-green .mdui-select-menu-item[selected]{color:#4caf50}.mdui-theme-accent-indigo .mdui-select-menu-item[selected]{color:#3f51b5}.mdui-theme-accent-light-blue .mdui-select-menu-item[selected]{color:#03a9f4}.mdui-theme-accent-light-green .mdui-select-menu-item[selected]{color:#8bc34a}.mdui-theme-accent-lime .mdui-select-menu-item[selected]{color:#cddc39}.mdui-theme-accent-orange .mdui-select-menu-item[selected]{color:#ff9800}.mdui-theme-accent-pink .mdui-select-menu-item[selected]{color:#e91e63}.mdui-theme-accent-purple .mdui-select-menu-item[selected]{color:#9c27b0}.mdui-theme-accent-red .mdui-select-menu-item[selected]{color:#f44336}.mdui-theme-accent-teal .mdui-select-menu-item[selected]{color:#009688}.mdui-theme-accent-yellow .mdui-select-menu-item[selected]{color:#ffeb3b}.mdui-theme-layout-dark .mdui-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' fill='%23FFF'/%3E%3C/svg%3E");border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-select-position-top{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' fill='%23FFF'/%3E%3C/svg%3E")}.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom,.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top{background-color:#424242}.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top{border-top:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom{border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-select-menu{color:#fff;background-color:#424242}.mdui-theme-layout-dark .mdui-select-menu-item:hover{background-color:#616161}.mdui-theme-layout-dark .mdui-select-menu-item[disabled]{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-dark select.mdui-select{color:#fff;background-color:#303030}.mdui-theme-layout-dark select.mdui-select option{color:#fff;background-color:#303030}.mdui-theme-layout-dark select.mdui-select[multiple]{border:1px solid rgba(255,255,255,.5)}.mdui-theme-layout-dark select.mdui-select[multiple] optgroup{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark select.mdui-select[multiple] optgroup:not(:first-child){border-top:1px solid rgba(255,255,255,.12)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' fill='%23FFF'/%3E%3C/svg%3E");border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-select-position-top{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' fill='%23FFF'/%3E%3C/svg%3E")}.mdui-theme-layout-auto .mdui-select-open.mdui-select-position-bottom,.mdui-theme-layout-auto .mdui-select-open.mdui-select-position-top{background-color:#424242}.mdui-theme-layout-auto .mdui-select-open.mdui-select-position-top{border-top:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-select-open.mdui-select-position-bottom{border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-select-menu{color:#fff;background-color:#424242}.mdui-theme-layout-auto .mdui-select-menu-item:hover{background-color:#616161}.mdui-theme-layout-auto .mdui-select-menu-item[disabled]{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-auto select.mdui-select{color:#fff;background-color:#303030}.mdui-theme-layout-auto select.mdui-select option{color:#fff;background-color:#303030}.mdui-theme-layout-auto select.mdui-select[multiple]{border:1px solid rgba(255,255,255,.5)}.mdui-theme-layout-auto select.mdui-select[multiple] optgroup{color:rgba(255,255,255,.5)}.mdui-theme-layout-auto select.mdui-select[multiple] optgroup:not(:first-child){border-top:1px solid rgba(255,255,255,.12)}}.mdui-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.mdui-toolbar>*{margin:0 16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-toolbar[class*=mdui-color-]:not(.mdui-color-transparent) .mdui-btn:hover{background-color:rgba(255,255,255,.1)}.mdui-toolbar[class*=mdui-color-]:not(.mdui-color-transparent) .mdui-btn:active{background-color:rgba(255,255,255,.165)}.mdui-toolbar>a{color:inherit;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-toolbar>.mdui-btn-icon{width:48px;min-width:48px;height:48px}@media (orientation:landscape) and (max-width:959px){.mdui-toolbar>.mdui-btn-icon{width:40px;min-width:40px;height:40px}}.mdui-toolbar>.mdui-btn-icon .mdui-icon{height:24px;line-height:24px}.mdui-toolbar .mdui-icon{color:inherit}.mdui-toolbar-spacer{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin:0}.mdui-toolbar{height:56px;line-height:56px}.mdui-toolbar>.mdui-btn{margin:0 4px}.mdui-toolbar>.mdui-btn+.mdui-btn{margin-left:0}@media (min-width:600px){.mdui-appbar .mdui-toolbar{height:64px;line-height:64px}.mdui-appbar .mdui-toolbar>.mdui-btn{margin:0 8px}.mdui-appbar .mdui-toolbar>.mdui-btn+.mdui-btn{margin-left:0}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar .mdui-toolbar{height:48px;line-height:48px}.mdui-appbar .mdui-toolbar>.mdui-btn{margin:0 4px}.mdui-appbar .mdui-toolbar>.mdui-btn+.mdui-btn{margin-left:0}}.mdui-appbar{z-index:1000;-webkit-box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mdui-appbar-fixed{position:fixed;top:0;right:0;left:0;-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:left,right;transition-property:left,right;will-change:left,right}@media (min-width:1024px){.mdui-drawer-body-left .mdui-appbar-inset.mdui-appbar-fixed{left:240px}}@media (min-width:1024px){.mdui-drawer-body-right .mdui-appbar-inset.mdui-appbar-fixed{right:240px}}.mdui-appbar-with-toolbar{padding-top:56px}@media (min-width:600px){.mdui-appbar-with-toolbar{padding-top:64px}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar-with-toolbar{padding-top:48px}}.mdui-appbar-with-tab{padding-top:48px}.mdui-appbar-with-tab-larger{padding-top:72px}.mdui-appbar-with-toolbar.mdui-appbar-with-tab{padding-top:104px}@media (min-width:600px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab{padding-top:112px}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab{padding-top:96px}}.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger{padding-top:128px}@media (min-width:600px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger{padding-top:136px}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger{padding-top:120px}}.mdui-theme-layout-dark .mdui-appbar>[class*=mdui-color-]:not(.mdui-color-transparent){color:#fff!important;background-color:#212121!important}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-appbar>[class*=mdui-color-]:not(.mdui-color-transparent){color:#fff!important;background-color:#212121!important}}.mdui-card{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;color:#000;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-card-header{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;height:72px;padding:16px}.mdui-card-header-avatar{float:left;width:40px;height:40px;border-radius:50%}.mdui-card-header-title{display:block;margin-left:52px;font-weight:500;font-size:16px;line-height:20px;opacity:.87;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-card-header-subtitle{display:block;margin-left:52px;font-weight:400;font-size:14px;line-height:20px;opacity:.54;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-card-primary{position:relative;padding:24px 16px 16px 16px}.mdui-card-primary-title{display:block;font-size:24px;line-height:36px;opacity:.87}.mdui-card-primary-subtitle{display:block;font-size:14px;line-height:24px;opacity:.54}.mdui-card-content{position:relative;padding:16px;font-size:14px;line-height:24px}.mdui-card-menu{position:absolute;top:16px;right:16px;z-index:1}.mdui-card-menu .mdui-btn{margin-left:8px}.mdui-card-actions{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px}.mdui-card-actions::after,.mdui-card-actions::before{display:table;content:' '}.mdui-card-actions::after{clear:both}.mdui-card-actions::after,.mdui-card-actions::before{display:table;content:' '}.mdui-card-actions::after{clear:both}.mdui-card-actions .mdui-btn{max-width:100%;margin:0 8px 0 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-card-actions .mdui-btn-icon{width:36px;height:36px;margin:0 8px}.mdui-card-actions-stacked .mdui-btn{display:block;margin:0 0 4px 0}.mdui-card-actions-stacked .mdui-btn:last-child{margin:0}.mdui-card-media{position:relative}.mdui-card-media img,.mdui-card-media video{display:block;width:100%}.mdui-card-media-covered{position:absolute;right:0;bottom:0;left:0;color:#fff;background:rgba(0,0,0,.2)}.mdui-card-media-covered .mdui-card-primary-title{opacity:1}.mdui-card-media-covered .mdui-card-primary-subtitle{opacity:.7}.mdui-card-media-covered-top{top:0;bottom:auto}.mdui-card-media-covered-transparent{background:0 0}.mdui-card-media-covered-gradient{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to top,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-card-media-covered-gradient.mdui-card-media-covered-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-theme-layout-dark .mdui-card{color:#fff;background-color:#424242}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-card{color:#fff;background-color:#424242}}.mdui-tab{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:48px;max-height:72px;margin:0 auto;padding:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;-webkit-overflow-scrolling:touch}.mdui-tab a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:72px;min-height:48px;max-height:72px;padding:12px;overflow:hidden;color:inherit;font-size:14px;text-align:center;text-transform:uppercase;text-decoration:none;text-overflow:ellipsis;outline:0;cursor:pointer;opacity:.7;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-tab a .mdui-icon{opacity:.7}@media (min-width:600px){.mdui-tab a{-webkit-box-flex:0;-ms-flex:none;flex:none;min-width:99px;max-width:264px;padding:12px 24px}}@media (min-width:1024px){.mdui-tab a{min-width:112px}}@media (min-width:1440px){.mdui-tab a{min-width:136px}}@media (min-width:1920px){.mdui-tab a{min-width:160px}}.mdui-tab a label{display:block;width:100%;cursor:pointer}.mdui-tab a .mdui-icon+label{margin-top:8px}.mdui-tab a[disabled]{cursor:default;opacity:.38}.mdui-tab a[disabled] label{cursor:default}.mdui-tab .mdui-tab-active{color:#3f51b5;opacity:1}.mdui-tab .mdui-tab-active .mdui-icon{opacity:1}@media (min-width:600px){.mdui-tab-centered::before{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;content:' '}.mdui-tab-centered::after{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;content:' '}.mdui-tab-centered a{-webkit-box-flex:0;-ms-flex:none;flex:none}}.mdui-tab-full-width a{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:none}.mdui-tab-scrollable{padding-left:56px}.mdui-tab-scrollable a{-webkit-box-flex:0;-ms-flex:none;flex:none}@media (max-width:599px){.mdui-tab-scrollable{padding-left:60px}}.mdui-tab-indicator{position:absolute;bottom:0;height:2px;background-color:#3f51b5;-webkit-transition:all .35s cubic-bezier(.4,0,.2,1);transition:all .35s cubic-bezier(.4,0,.2,1);will-change:left,width}.mdui-theme-primary-amber .mdui-tab .mdui-tab-active{color:#ffc107}.mdui-theme-primary-amber .mdui-tab-indicator{background-color:#ffc107}.mdui-theme-primary-blue .mdui-tab .mdui-tab-active{color:#2196f3}.mdui-theme-primary-blue .mdui-tab-indicator{background-color:#2196f3}.mdui-theme-primary-blue-grey .mdui-tab .mdui-tab-active{color:#607d8b}.mdui-theme-primary-blue-grey .mdui-tab-indicator{background-color:#607d8b}.mdui-theme-primary-brown .mdui-tab .mdui-tab-active{color:#795548}.mdui-theme-primary-brown .mdui-tab-indicator{background-color:#795548}.mdui-theme-primary-cyan .mdui-tab .mdui-tab-active{color:#00bcd4}.mdui-theme-primary-cyan .mdui-tab-indicator{background-color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-tab .mdui-tab-active{color:#ff5722}.mdui-theme-primary-deep-orange .mdui-tab-indicator{background-color:#ff5722}.mdui-theme-primary-deep-purple .mdui-tab .mdui-tab-active{color:#673ab7}.mdui-theme-primary-deep-purple .mdui-tab-indicator{background-color:#673ab7}.mdui-theme-primary-green .mdui-tab .mdui-tab-active{color:#4caf50}.mdui-theme-primary-green .mdui-tab-indicator{background-color:#4caf50}.mdui-theme-primary-grey .mdui-tab .mdui-tab-active{color:#9e9e9e}.mdui-theme-primary-grey .mdui-tab-indicator{background-color:#9e9e9e}.mdui-theme-primary-indigo .mdui-tab .mdui-tab-active{color:#3f51b5}.mdui-theme-primary-indigo .mdui-tab-indicator{background-color:#3f51b5}.mdui-theme-primary-light-blue .mdui-tab .mdui-tab-active{color:#03a9f4}.mdui-theme-primary-light-blue .mdui-tab-indicator{background-color:#03a9f4}.mdui-theme-primary-light-green .mdui-tab .mdui-tab-active{color:#8bc34a}.mdui-theme-primary-light-green .mdui-tab-indicator{background-color:#8bc34a}.mdui-theme-primary-lime .mdui-tab .mdui-tab-active{color:#cddc39}.mdui-theme-primary-lime .mdui-tab-indicator{background-color:#cddc39}.mdui-theme-primary-orange .mdui-tab .mdui-tab-active{color:#ff9800}.mdui-theme-primary-orange .mdui-tab-indicator{background-color:#ff9800}.mdui-theme-primary-pink .mdui-tab .mdui-tab-active{color:#e91e63}.mdui-theme-primary-pink .mdui-tab-indicator{background-color:#e91e63}.mdui-theme-primary-purple .mdui-tab .mdui-tab-active{color:#9c27b0}.mdui-theme-primary-purple .mdui-tab-indicator{background-color:#9c27b0}.mdui-theme-primary-red .mdui-tab .mdui-tab-active{color:#f44336}.mdui-theme-primary-red .mdui-tab-indicator{background-color:#f44336}.mdui-theme-primary-teal .mdui-tab .mdui-tab-active{color:#009688}.mdui-theme-primary-teal .mdui-tab-indicator{background-color:#009688}.mdui-theme-primary-yellow .mdui-tab .mdui-tab-active{color:#ffeb3b}.mdui-theme-primary-yellow .mdui-tab-indicator{background-color:#ffeb3b}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white) .mdui-tab-active{color:inherit}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white) .mdui-tab-indicator{background-color:#fff}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar{width:5px;height:5px;background:0 0}@media (min-width:1024px){.mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar{width:8px;height:8px}}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3)}.mdui-subheader,.mdui-subheader-inset{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;height:48px;padding-right:16px;padding-left:16px;color:rgba(0,0,0,.54);font-weight:500;font-size:14px;line-height:48px;cursor:default;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-subheader-inset{padding-left:72px}.mdui-theme-layout-dark .mdui-subheader,.mdui-theme-layout-dark .mdui-subheader-inset{color:rgba(255,255,255,.7)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-subheader,.mdui-theme-layout-auto .mdui-subheader-inset{color:rgba(255,255,255,.7)}}.mdui-grid-list{margin:0 -2px}.mdui-grid-list .mdui-col,.mdui-grid-list [class*=mdui-col-lg-],.mdui-grid-list [class*=mdui-col-md-],.mdui-grid-list [class*=mdui-col-sm-],.mdui-grid-list [class*=mdui-col-xl-],.mdui-grid-list [class*=mdui-col-xs-]{padding-right:2px;padding-left:2px}.mdui-grid-tile{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin-bottom:4px;overflow:hidden}.mdui-grid-tile img{display:block;width:100%}.mdui-grid-tile-actions{position:absolute;right:0;bottom:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:48px;max-height:68px;padding:16px;color:#fff;background:rgba(0,0,0,.2)}.mdui-grid-tile-actions .mdui-icon{color:#fff}.mdui-grid-tile-text{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.mdui-grid-tile-title{height:16px;font-size:16px;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-grid-tile-title .mdui-icon{margin-right:8px}.mdui-grid-tile-subtitle{height:18px;margin-top:4px;font-size:12px;line-height:18px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-grid-tile-subtitle .mdui-icon{margin-right:8px;font-size:18px}.mdui-grid-tile-buttons{-webkit-box-flex:0;-ms-flex:none;flex:none;margin:-8px;white-space:nowrap}.mdui-grid-tile-buttons .mdui-btn{margin-left:8px}.mdui-grid-tile-buttons .mdui-btn:first-child{margin-left:0}.mdui-grid-tile-text+.mdui-grid-tile-buttons{margin-left:8px}.mdui-grid-tile-buttons+.mdui-grid-tile-text{margin-left:16px}.mdui-grid-tile-actions-top{top:0;bottom:auto}.mdui-grid-tile-actions-transparent{background:0 0}.mdui-grid-tile-actions-gradient{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to top,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-grid-tile-actions-gradient.mdui-grid-tile-actions-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-list{margin:0;padding:8px 0;list-style:none;background-color:transparent}.mdui-list .mdui-list{padding:0}.mdui-list>.mdui-divider,.mdui-list>.mdui-divider-dark,.mdui-list>.mdui-divider-inset,.mdui-list>.mdui-divider-inset-dark,.mdui-list>.mdui-divider-inset-light,.mdui-list>.mdui-divider-light{margin-top:8px;margin-bottom:8px}.mdui-list a{color:inherit;text-decoration:none}.mdui-list .mdui-subheader,.mdui-list .mdui-subheader-inset{margin-top:8px}.mdui-list .mdui-subheader-inset::before,.mdui-list .mdui-subheader::before{position:absolute;right:0;left:0;display:block;height:1px;background-color:rgba(0,0,0,.12);content:' '}.mdui-list .mdui-subheader-inset:first-child,.mdui-list .mdui-subheader:first-child{margin-top:-8px}.mdui-list .mdui-subheader-inset:first-child::before,.mdui-list .mdui-subheader:first-child::before{background-color:transparent}.mdui-list .mdui-subheader-inset::before{left:72px}.mdui-list-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;min-height:48px;padding:0 16px;text-decoration:none;cursor:pointer;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1)}.mdui-list-item:hover{background-color:rgba(0,0,0,.08)}.mdui-list-item::after{height:48px;visibility:hidden;content:' '}.mdui-list-item-icon{width:24px;min-width:24px;height:24px;color:rgba(0,0,0,.54)}.mdui-list-item-avatar{min-width:40px;max-width:40px;height:40px;margin-top:8px;margin-bottom:8px;color:#fff;line-height:40px;text-align:center;background-color:#bdbdbd;border-radius:50%}.mdui-list-item-avatar img{width:100%;height:100%;border-radius:50%}.mdui-list-item-content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:14px;padding-bottom:14px;font-weight:400;font-size:16px;line-height:20px}.mdui-list-item-text{font-size:14px;opacity:.54}.mdui-list-item-title~.mdui-list-item-text{margin-top:4px}.mdui-list-item-active{font-weight:700;background-color:rgba(0,0,0,.08)}.mdui-list-item-active .mdui-list-item-content{font-weight:700}.mdui-list-item-active .mdui-list-item-text{font-weight:400}.mdui-list-item-one-line,.mdui-list-item-three-line,.mdui-list-item-two-line{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.mdui-list-item-one-line{-webkit-line-clamp:1;height:20px}.mdui-list-item-two-line{-webkit-line-clamp:2;height:40px}.mdui-list-item-three-line{-webkit-line-clamp:3;height:60px}.mdui-list-item-icon~.mdui-list-item-content{margin-left:32px}.mdui-checkbox~.mdui-list-item-content,.mdui-radio~.mdui-list-item-content,.mdui-switch~.mdui-list-item-content{margin-left:20px}.mdui-list-item-avatar~.mdui-list-item-content{margin-left:16px}.mdui-list-item-content~.mdui-checkbox,.mdui-list-item-content~.mdui-list-item-avatar,.mdui-list-item-content~.mdui-list-item-icon,.mdui-list-item-content~.mdui-radio,.mdui-list-item-content~.mdui-switch{margin-left:16px}.mdui-list-item-content~.mdui-checkbox,.mdui-list-item-content~.mdui-radio{padding-left:24px}.mdui-list-dense{padding:4px 0;font-size:13px}.mdui-list-dense>.mdui-divider,.mdui-list-dense>.mdui-divider-dark,.mdui-list-dense>.mdui-divider-inset,.mdui-list-dense>.mdui-divider-inset-dark,.mdui-list-dense>.mdui-divider-inset-light,.mdui-list-dense>.mdui-divider-light{margin-top:4px;margin-bottom:4px}.mdui-list-dense .mdui-subheader,.mdui-list-dense .mdui-subheader-inset{height:40px;margin-top:4px;font-size:12px;line-height:40px}.mdui-list-dense .mdui-subheader-inset:first-child,.mdui-list-dense .mdui-subheader:first-child{margin-top:-4px}.mdui-list-dense .mdui-list-item{min-height:40px}.mdui-list-dense .mdui-list-item::after{height:40px}.mdui-list-dense .mdui-list-item-icon{width:20px;height:20px;font-size:20px}.mdui-list-dense .mdui-list-item-avatar{width:36px;min-width:36px;height:36px;min-height:36px}.mdui-list-dense .mdui-list-item-content{padding-top:11px;padding-bottom:11px;font-size:13px;line-height:18px}.mdui-list-dense .mdui-list-item-text{font-size:13px}.mdui-list-dense .mdui-list-item-title~.mdui-list-item-text{margin-top:2px}.mdui-list-dense .mdui-list-item-one-line{height:18px}.mdui-list-dense .mdui-list-item-two-line{height:36px}.mdui-list-dense .mdui-list-item-three-line{height:54px}.mdui-theme-layout-dark .mdui-list .mdui-subheader-inset::before,.mdui-theme-layout-dark .mdui-list .mdui-subheader::before{background-color:rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-list .mdui-subheader-inset:first-child::before,.mdui-theme-layout-dark .mdui-list .mdui-subheader:first-child::before{background-color:transparent}.mdui-theme-layout-dark .mdui-list-item{color:#fff}.mdui-theme-layout-dark .mdui-list-item:hover{background-color:rgba(255,255,255,.08)}.mdui-theme-layout-dark .mdui-list-item-icon{color:#fff}.mdui-theme-layout-dark .mdui-list-item-text{opacity:.7}.mdui-theme-layout-dark .mdui-list-item-active{background-color:rgba(255,255,255,.08)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-list .mdui-subheader-inset::before,.mdui-theme-layout-auto .mdui-list .mdui-subheader::before{background-color:rgba(255,255,255,.12)}.mdui-theme-layout-auto .mdui-list .mdui-subheader-inset:first-child::before,.mdui-theme-layout-auto .mdui-list .mdui-subheader:first-child::before{background-color:transparent}.mdui-theme-layout-auto .mdui-list-item{color:#fff}.mdui-theme-layout-auto .mdui-list-item:hover{background-color:rgba(255,255,255,.08)}.mdui-theme-layout-auto .mdui-list-item-icon{color:#fff}.mdui-theme-layout-auto .mdui-list-item-text{opacity:.7}.mdui-theme-layout-auto .mdui-list-item-active{background-color:rgba(255,255,255,.08)}}[class*=mdui-color-] .mdui-list-item{color:inherit}[class*=mdui-color-] .mdui-list-item-icon{color:inherit}body.mdui-loaded{-webkit-transition:padding .3s cubic-bezier(0,0,.2,1);transition:padding .3s cubic-bezier(0,0,.2,1)}body.mdui-loaded .mdui-drawer{-webkit-transition:all .3s cubic-bezier(0,0,.2,1);transition:all .3s cubic-bezier(0,0,.2,1)}.mdui-drawer{position:fixed;top:0;bottom:0;left:0;z-index:5000;-webkit-box-sizing:border-box;box-sizing:border-box;width:calc(100% - 56px);max-width:280px;margin:0;overflow-x:hidden;overflow-y:auto;white-space:nowrap;will-change:transform;-webkit-overflow-scrolling:touch}@media (max-width:1023px){.mdui-drawer:not(.mdui-drawer-open){-webkit-box-shadow:none!important;box-shadow:none!important}}@media (min-width:600px){.mdui-drawer{width:calc(100% - 64px);max-width:320px}}@media (min-width:1024px){.mdui-drawer{width:240px;max-width:none}.mdui-drawer.mdui-drawer-close{-webkit-box-shadow:none!important;box-shadow:none!important}}.mdui-drawer-right{right:0;left:auto}@media (max-width:1023px){.mdui-drawer{background-color:#fff;-webkit-transform:translateX(-330px);transform:translateX(-330px);-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mdui-drawer-right{-webkit-transform:translateX(330px);transform:translateX(330px)}}@media (max-width:599px){.mdui-drawer{-webkit-transform:translateX(-290px);transform:translateX(-290px)}.mdui-drawer-right{-webkit-transform:translateX(290px);transform:translateX(290px)}}.mdui-drawer-close{-webkit-transform:translateX(-290px);transform:translateX(-290px)}.mdui-drawer-close.mdui-drawer-right{-webkit-transform:translateX(290px);transform:translateX(290px)}@media (min-width:600px){.mdui-drawer-close{-webkit-transform:translateX(-330px);transform:translateX(-330px)}.mdui-drawer-close.mdui-drawer-right{-webkit-transform:translateX(330px);transform:translateX(330px)}}@media (min-width:1024px){.mdui-drawer-close{-webkit-transform:translateX(-250px);transform:translateX(-250px)}.mdui-drawer-close.mdui-drawer-right{-webkit-transform:translateX(250px);transform:translateX(250px)}}.mdui-drawer-open{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}@media (min-width:1024px){.mdui-drawer-body-left{padding-left:240px}.mdui-drawer-body-right{padding-right:240px}.mdui-appbar-with-toolbar .mdui-drawer{top:64px}.mdui-appbar-with-tab .mdui-drawer{top:48px}.mdui-appbar-with-tab-larger .mdui-drawer{top:72px}.mdui-appbar-with-toolbar.mdui-appbar-with-tab .mdui-drawer{top:112px}.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger .mdui-drawer{top:136px}}.mdui-drawer[class*=mdui-color-]:not(.mdui-color-transparent){-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mdui-drawer-full-height{top:0!important}@media (max-width:1023px){.mdui-theme-layout-dark .mdui-drawer{background-color:#424242}}@media (prefers-color-scheme:dark) and (max-width:1023px){.mdui-theme-layout-auto .mdui-drawer{background-color:#424242}}.mdui-dialog{position:fixed;right:0;left:0;z-index:6000;display:none;-webkit-box-sizing:border-box;box-sizing:border-box;width:92%;min-width:180px;max-width:728px;max-height:90%;margin:auto;overflow:hidden;color:#000;background-color:#fff;border-radius:2px;-webkit-transform:scale(.95);transform:scale(.95);opacity:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,visibility,-webkit-transform;transition-property:opacity,visibility,-webkit-transform;transition-property:transform,opacity,visibility;transition-property:transform,opacity,visibility,-webkit-transform;will-change:top,opacity,transform;-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media (min-width:600px){.mdui-dialog{width:85%;max-height:85%}}@media (min-width:1024px){.mdui-dialog{width:80%;max-height:80%}}.mdui-dialog-open{-webkit-transform:scale(1);transform:scale(1);opacity:1}.mdui-dialog-title{-webkit-box-sizing:border-box;box-sizing:border-box;font-weight:500;font-size:20px;line-height:24px;text-align:left}.mdui-dialog>.mdui-dialog-title{padding:24px 24px 20px 24px}.mdui-dialog-content{-webkit-box-sizing:border-box;box-sizing:border-box;padding:24px;overflow-y:auto;color:rgba(0,0,0,.7);font-size:15px;line-height:1.5;-webkit-overflow-scrolling:touch}.mdui-dialog-content>.mdui-dialog-title{padding-bottom:20px}.mdui-dialog-title+.mdui-dialog-content{padding-top:0}.mdui-dialog-actions{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;text-align:right}.mdui-dialog-actions .mdui-btn{min-width:64px;margin-left:8px;color:#e91e63}.mdui-dialog-actions .mdui-btn:first-child{margin-left:0}.mdui-dialog-content>.mdui-dialog-actions{margin:0 -24px -24px -24px;padding-top:32px}.mdui-dialog-actions-stacked{padding:8px 0 8px 0}.mdui-dialog-actions-stacked .mdui-btn{width:100%;height:48px;margin:0;line-height:48px!important;text-align:right;border-radius:0}.mdui-theme-accent-amber .mdui-dialog-actions .mdui-btn{color:#ffc107}.mdui-theme-accent-blue .mdui-dialog-actions .mdui-btn{color:#2196f3}.mdui-theme-accent-cyan .mdui-dialog-actions .mdui-btn{color:#00bcd4}.mdui-theme-accent-deep-orange .mdui-dialog-actions .mdui-btn{color:#ff5722}.mdui-theme-accent-deep-purple .mdui-dialog-actions .mdui-btn{color:#673ab7}.mdui-theme-accent-green .mdui-dialog-actions .mdui-btn{color:#4caf50}.mdui-theme-accent-indigo .mdui-dialog-actions .mdui-btn{color:#3f51b5}.mdui-theme-accent-light-blue .mdui-dialog-actions .mdui-btn{color:#03a9f4}.mdui-theme-accent-light-green .mdui-dialog-actions .mdui-btn{color:#8bc34a}.mdui-theme-accent-lime .mdui-dialog-actions .mdui-btn{color:#cddc39}.mdui-theme-accent-orange .mdui-dialog-actions .mdui-btn{color:#ff9800}.mdui-theme-accent-pink .mdui-dialog-actions .mdui-btn{color:#e91e63}.mdui-theme-accent-purple .mdui-dialog-actions .mdui-btn{color:#9c27b0}.mdui-theme-accent-red .mdui-dialog-actions .mdui-btn{color:#f44336}.mdui-theme-accent-teal .mdui-dialog-actions .mdui-btn{color:#009688}.mdui-theme-accent-yellow .mdui-dialog-actions .mdui-btn{color:#ffeb3b}.mdui-theme-layout-dark .mdui-dialog{color:#fff;background-color:#424242}.mdui-theme-layout-dark .mdui-dialog-content{color:rgba(255,255,255,.7)}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-dialog{color:#fff;background-color:#424242}.mdui-theme-layout-auto .mdui-dialog-content{color:rgba(255,255,255,.7)}}.mdui-dialog-alert{max-width:448px}.mdui-dialog-confirm{max-width:448px}.mdui-dialog-prompt{max-width:448px}.mdui-dialog-prompt .mdui-textfield{padding-top:0}.mdui-tooltip{position:absolute;z-index:9000;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;max-width:180px;min-height:32px;padding:8px 16px;color:#fff;font-weight:500;font-size:14px;line-height:22px;text-align:left;background-color:rgba(97,97,97,.9);border-radius:2px;-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform;will-change:opacity,transform}@media (min-width:1024px){.mdui-tooltip{max-width:200px;min-height:24px;padding:4px 8px;font-size:12px;line-height:18px}}.mdui-tooltip-open{-webkit-transform:scale(1);transform:scale(1);opacity:1}.mdui-snackbar{position:fixed;z-index:7000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;min-height:48px;padding:0 24px 0 24px;color:#fff;font-size:14px;line-height:20px;background-color:#323232;will-change:transform}@media (min-width:600px){.mdui-snackbar{width:auto;min-width:288px;max-width:568px;border-radius:2px}}.mdui-snackbar-bottom,.mdui-snackbar-left-bottom,.mdui-snackbar-left-top,.mdui-snackbar-right-bottom,.mdui-snackbar-right-top,.mdui-snackbar-top{-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1)}.mdui-snackbar-bottom,.mdui-snackbar-left-bottom,.mdui-snackbar-right-bottom{bottom:0}.mdui-snackbar-left-top,.mdui-snackbar-right-top,.mdui-snackbar-top{top:0}.mdui-snackbar-bottom,.mdui-snackbar-top{left:50%}@media (min-width:600px){.mdui-snackbar-left-top{top:24px;left:24px}.mdui-snackbar-left-bottom{bottom:24px;left:24px}.mdui-snackbar-right-top{top:24px;right:24px}.mdui-snackbar-right-bottom{right:24px;bottom:24px}}.mdui-snackbar-text{position:relative;max-width:100%;padding:14px 0 14px 0;overflow:hidden;text-overflow:ellipsis}.mdui-snackbar-action{margin-right:-16px;white-space:nowrap;color:#ff80ab}.mdui-theme-accent-amber .mdui-snackbar-action{color:#ffe57f}.mdui-theme-accent-blue .mdui-snackbar-action{color:#82b1ff}.mdui-theme-accent-cyan .mdui-snackbar-action{color:#84ffff}.mdui-theme-accent-deep-orange .mdui-snackbar-action{color:#ff9e80}.mdui-theme-accent-deep-purple .mdui-snackbar-action{color:#b388ff}.mdui-theme-accent-green .mdui-snackbar-action{color:#b9f6ca}.mdui-theme-accent-indigo .mdui-snackbar-action{color:#8c9eff}.mdui-theme-accent-light-blue .mdui-snackbar-action{color:#80d8ff}.mdui-theme-accent-light-green .mdui-snackbar-action{color:#ccff90}.mdui-theme-accent-lime .mdui-snackbar-action{color:#f4ff81}.mdui-theme-accent-orange .mdui-snackbar-action{color:#ffd180}.mdui-theme-accent-pink .mdui-snackbar-action{color:#ff80ab}.mdui-theme-accent-purple .mdui-snackbar-action{color:#ea80fc}.mdui-theme-accent-red .mdui-snackbar-action{color:#ff8a80}.mdui-theme-accent-teal .mdui-snackbar-action{color:#a7ffeb}.mdui-theme-accent-yellow .mdui-snackbar-action{color:#ffff8d}.mdui-theme-layout-dark .mdui-snackbar{background-color:#5d5d5d}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-snackbar{background-color:#5d5d5d}}.mdui-chip{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:32px;margin:2px 0;color:inherit;white-space:nowrap;background-color:#e0e0e0;border-radius:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);will-change:box-shadow}.mdui-chip:focus,.mdui-chip:hover{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-chip:active{background-color:#d6d6d6}.mdui-chip-icon{position:relative;display:inline-block;width:32px;height:32px;margin-right:-4px;overflow:hidden;color:#fff;font-size:18px;line-height:32px;text-align:center;vertical-align:middle;background-color:#989898;border-radius:50%}.mdui-chip-icon .mdui-icon{position:absolute;top:4px;left:4px;color:#fff}.mdui-chip-title{display:inline-block;height:32px;padding-right:12px;padding-left:12px;font-size:14px;line-height:32px;vertical-align:middle}.mdui-chip-delete{display:inline-block;width:24px;height:24px;margin-right:4px;margin-left:-8px;overflow:hidden;text-align:center;text-decoration:none;vertical-align:middle;border-radius:50%;cursor:pointer;opacity:.54;-webkit-transition:opacity .25s cubic-bezier(.4,0,.2,1);transition:opacity .25s cubic-bezier(.4,0,.2,1);will-change:opacity}.mdui-chip-delete:focus,.mdui-chip-delete:hover{opacity:.87}.mdui-theme-layout-dark .mdui-chip{background-color:#484848}.mdui-theme-layout-dark .mdui-chip:active{background-color:#5d5d5d}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-chip{background-color:#484848}.mdui-theme-layout-auto .mdui-chip:active{background-color:#5d5d5d}}.mdui-bottom-nav{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;height:56px;margin:0 auto;padding:0;overflow:hidden;white-space:nowrap}@media (min-width:600px){.mdui-bottom-nav::before{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;content:' '}.mdui-bottom-nav::after{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;content:' '}}.mdui-bottom-nav a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-width:32px;max-width:none;padding:8px 12px 10px 12px;overflow:hidden;color:inherit;font-size:12px;text-align:center;text-decoration:none;text-overflow:ellipsis;cursor:pointer;opacity:.7;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:padding}@media (min-width:600px){.mdui-bottom-nav a{max-width:144px}}.mdui-bottom-nav a .mdui-icon{opacity:.7}.mdui-bottom-nav a label{display:block;width:100%;cursor:pointer;-webkit-transition:-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);will-change:font-size}.mdui-bottom-nav a .mdui-icon+label{margin-top:6px}.mdui-bottom-nav a.mdui-bottom-nav-active{color:#3f51b5;font-size:14px;opacity:1}.mdui-bottom-nav a.mdui-bottom-nav-active .mdui-icon{opacity:1}.mdui-bottom-nav-text-auto a{min-width:32px;padding-right:0;padding-left:0}@media (min-width:600px){.mdui-bottom-nav-text-auto a{max-width:156px}}.mdui-bottom-nav-text-auto a .mdui-icon{padding-top:16px;-webkit-transition:padding-top .2s cubic-bezier(.4,0,.2,1);transition:padding-top .2s cubic-bezier(.4,0,.2,1);will-change:padding-top}.mdui-bottom-nav-text-auto a label{-webkit-transform:scale(0);transform:scale(0)}.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active{padding-right:18px;padding-left:18px}.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active .mdui-icon{padding-top:0}.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active label{-webkit-transform:scale(1);transform:scale(1)}.mdui-bottom-nav-fixed{padding-bottom:56px}.mdui-bottom-nav-fixed .mdui-bottom-nav{position:fixed;right:0;bottom:0;left:0}.mdui-theme-primary-amber .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ffc107}.mdui-theme-primary-blue .mdui-bottom-nav a.mdui-bottom-nav-active{color:#2196f3}.mdui-theme-primary-blue-grey .mdui-bottom-nav a.mdui-bottom-nav-active{color:#607d8b}.mdui-theme-primary-brown .mdui-bottom-nav a.mdui-bottom-nav-active{color:#795548}.mdui-theme-primary-cyan .mdui-bottom-nav a.mdui-bottom-nav-active{color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ff5722}.mdui-theme-primary-deep-purple .mdui-bottom-nav a.mdui-bottom-nav-active{color:#673ab7}.mdui-theme-primary-green .mdui-bottom-nav a.mdui-bottom-nav-active{color:#4caf50}.mdui-theme-primary-grey .mdui-bottom-nav a.mdui-bottom-nav-active{color:#9e9e9e}.mdui-theme-primary-indigo .mdui-bottom-nav a.mdui-bottom-nav-active{color:#3f51b5}.mdui-theme-primary-light-blue .mdui-bottom-nav a.mdui-bottom-nav-active{color:#03a9f4}.mdui-theme-primary-light-green .mdui-bottom-nav a.mdui-bottom-nav-active{color:#8bc34a}.mdui-theme-primary-lime .mdui-bottom-nav a.mdui-bottom-nav-active{color:#cddc39}.mdui-theme-primary-orange .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ff9800}.mdui-theme-primary-pink .mdui-bottom-nav a.mdui-bottom-nav-active{color:#e91e63}.mdui-theme-primary-purple .mdui-bottom-nav a.mdui-bottom-nav-active{color:#9c27b0}.mdui-theme-primary-red .mdui-bottom-nav a.mdui-bottom-nav-active{color:#f44336}.mdui-theme-primary-teal .mdui-bottom-nav a.mdui-bottom-nav-active{color:#009688}.mdui-theme-primary-yellow .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ffeb3b}.mdui-bottom-nav[class*=mdui-color-] .mdui-bottom-nav-active{color:inherit!important}.mdui-progress{position:relative;display:block;width:100%;height:4px;overflow:hidden;background-color:rgba(63,81,181,.2);border-radius:2px}.mdui-progress-determinate{position:absolute;top:0;bottom:0;left:0;background-color:#3f51b5;-webkit-transition:width .3s linear;transition:width .3s linear}.mdui-progress-indeterminate{background-color:#3f51b5}.mdui-progress-indeterminate::before{position:absolute;top:0;bottom:0;left:0;background-color:inherit;-webkit-animation:mdui-progress-indeterminate 2s linear infinite;animation:mdui-progress-indeterminate 2s linear infinite;content:' ';will-change:left,width}.mdui-progress-indeterminate::after{position:absolute;top:0;bottom:0;left:0;background-color:inherit;-webkit-animation:mdui-progress-indeterminate-short 2s linear infinite;animation:mdui-progress-indeterminate-short 2s linear infinite;content:' ';will-change:left,width}@-webkit-keyframes mdui-progress-indeterminate{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@keyframes mdui-progress-indeterminate{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@-webkit-keyframes mdui-progress-indeterminate-short{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}100%{left:100%;width:0}}@keyframes mdui-progress-indeterminate-short{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}100%{left:100%;width:0}}.mdui-theme-primary-amber .mdui-progress{background-color:rgba(255,193,7,.2)}.mdui-theme-primary-amber .mdui-progress-determinate,.mdui-theme-primary-amber .mdui-progress-indeterminate{background-color:#ffc107}.mdui-theme-primary-blue .mdui-progress{background-color:rgba(33,150,243,.2)}.mdui-theme-primary-blue .mdui-progress-determinate,.mdui-theme-primary-blue .mdui-progress-indeterminate{background-color:#2196f3}.mdui-theme-primary-blue-grey .mdui-progress{background-color:rgba(96,125,139,.2)}.mdui-theme-primary-blue-grey .mdui-progress-determinate,.mdui-theme-primary-blue-grey .mdui-progress-indeterminate{background-color:#607d8b}.mdui-theme-primary-brown .mdui-progress{background-color:rgba(121,85,72,.2)}.mdui-theme-primary-brown .mdui-progress-determinate,.mdui-theme-primary-brown .mdui-progress-indeterminate{background-color:#795548}.mdui-theme-primary-cyan .mdui-progress{background-color:rgba(0,188,212,.2)}.mdui-theme-primary-cyan .mdui-progress-determinate,.mdui-theme-primary-cyan .mdui-progress-indeterminate{background-color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-progress{background-color:rgba(255,87,34,.2)}.mdui-theme-primary-deep-orange .mdui-progress-determinate,.mdui-theme-primary-deep-orange .mdui-progress-indeterminate{background-color:#ff5722}.mdui-theme-primary-deep-purple .mdui-progress{background-color:rgba(103,58,183,.2)}.mdui-theme-primary-deep-purple .mdui-progress-determinate,.mdui-theme-primary-deep-purple .mdui-progress-indeterminate{background-color:#673ab7}.mdui-theme-primary-green .mdui-progress{background-color:rgba(76,175,80,.2)}.mdui-theme-primary-green .mdui-progress-determinate,.mdui-theme-primary-green .mdui-progress-indeterminate{background-color:#4caf50}.mdui-theme-primary-grey .mdui-progress{background-color:rgba(158,158,158,.2)}.mdui-theme-primary-grey .mdui-progress-determinate,.mdui-theme-primary-grey .mdui-progress-indeterminate{background-color:#9e9e9e}.mdui-theme-primary-indigo .mdui-progress{background-color:rgba(63,81,181,.2)}.mdui-theme-primary-indigo .mdui-progress-determinate,.mdui-theme-primary-indigo .mdui-progress-indeterminate{background-color:#3f51b5}.mdui-theme-primary-light-blue .mdui-progress{background-color:rgba(3,169,244,.2)}.mdui-theme-primary-light-blue .mdui-progress-determinate,.mdui-theme-primary-light-blue .mdui-progress-indeterminate{background-color:#03a9f4}.mdui-theme-primary-light-green .mdui-progress{background-color:rgba(139,195,74,.2)}.mdui-theme-primary-light-green .mdui-progress-determinate,.mdui-theme-primary-light-green .mdui-progress-indeterminate{background-color:#8bc34a}.mdui-theme-primary-lime .mdui-progress{background-color:rgba(205,220,57,.2)}.mdui-theme-primary-lime .mdui-progress-determinate,.mdui-theme-primary-lime .mdui-progress-indeterminate{background-color:#cddc39}.mdui-theme-primary-orange .mdui-progress{background-color:rgba(255,152,0,.2)}.mdui-theme-primary-orange .mdui-progress-determinate,.mdui-theme-primary-orange .mdui-progress-indeterminate{background-color:#ff9800}.mdui-theme-primary-pink .mdui-progress{background-color:rgba(233,30,99,.2)}.mdui-theme-primary-pink .mdui-progress-determinate,.mdui-theme-primary-pink .mdui-progress-indeterminate{background-color:#e91e63}.mdui-theme-primary-purple .mdui-progress{background-color:rgba(156,39,176,.2)}.mdui-theme-primary-purple .mdui-progress-determinate,.mdui-theme-primary-purple .mdui-progress-indeterminate{background-color:#9c27b0}.mdui-theme-primary-red .mdui-progress{background-color:rgba(244,67,54,.2)}.mdui-theme-primary-red .mdui-progress-determinate,.mdui-theme-primary-red .mdui-progress-indeterminate{background-color:#f44336}.mdui-theme-primary-teal .mdui-progress{background-color:rgba(0,150,136,.2)}.mdui-theme-primary-teal .mdui-progress-determinate,.mdui-theme-primary-teal .mdui-progress-indeterminate{background-color:#009688}.mdui-theme-primary-yellow .mdui-progress{background-color:rgba(255,235,59,.2)}.mdui-theme-primary-yellow .mdui-progress-determinate,.mdui-theme-primary-yellow .mdui-progress-indeterminate{background-color:#ffeb3b}.mdui-spinner{position:relative;display:inline-block;width:28px;height:28px;-webkit-animation:mdui-spinner 1568ms linear infinite;animation:mdui-spinner 1568ms linear infinite}@-webkit-keyframes mdui-spinner{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mdui-spinner{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mdui-spinner-layer{position:absolute;width:100%;height:100%;border-color:#3f51b5;opacity:0;opacity:1;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-1{border-color:#42a5f5!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-2{border-color:#f44336!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-3{border-color:#fdd835!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-4{border-color:#4caf50!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdui-spinner-layer-fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@keyframes mdui-spinner-layer-fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes mdui-spinner-layer-1-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes mdui-spinner-layer-1-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes mdui-spinner-layer-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes mdui-spinner-layer-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes mdui-spinner-layer-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes mdui-spinner-layer-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes mdui-spinner-layer-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes mdui-spinner-layer-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.mdui-spinner-gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.mdui-spinner-gap-patch .mdui-spinner-circle{left:-450%;-webkit-box-sizing:border-box;box-sizing:border-box;width:1000%}.mdui-spinner-circle-clipper{position:relative;display:inline-block;width:50%;height:100%;overflow:hidden;border-color:inherit}.mdui-spinner-circle-clipper .mdui-spinner-circle{position:absolute;top:0;right:0;bottom:0;-webkit-box-sizing:border-box;box-sizing:border-box;width:200%;height:100%;border-color:inherit;border-style:solid;border-width:3px;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none}.mdui-spinner-circle-clipper.mdui-spinner-left{float:left}.mdui-spinner-circle-clipper.mdui-spinner-left .mdui-spinner-circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg);-webkit-animation:mdui-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-circle-clipper.mdui-spinner-right{float:right}.mdui-spinner-circle-clipper.mdui-spinner-right .mdui-spinner-circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg);-webkit-animation:mdui-spinner-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdui-spinner-left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@keyframes mdui-spinner-left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes mdui-spinner-right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}@keyframes mdui-spinner-right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}.mdui-theme-primary-amber .mdui-spinner-layer{border-color:#ffc107}.mdui-theme-primary-blue .mdui-spinner-layer{border-color:#2196f3}.mdui-theme-primary-blue-grey .mdui-spinner-layer{border-color:#607d8b}.mdui-theme-primary-brown .mdui-spinner-layer{border-color:#795548}.mdui-theme-primary-cyan .mdui-spinner-layer{border-color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-spinner-layer{border-color:#ff5722}.mdui-theme-primary-deep-purple .mdui-spinner-layer{border-color:#673ab7}.mdui-theme-primary-green .mdui-spinner-layer{border-color:#4caf50}.mdui-theme-primary-grey .mdui-spinner-layer{border-color:#9e9e9e}.mdui-theme-primary-indigo .mdui-spinner-layer{border-color:#3f51b5}.mdui-theme-primary-light-blue .mdui-spinner-layer{border-color:#03a9f4}.mdui-theme-primary-light-green .mdui-spinner-layer{border-color:#8bc34a}.mdui-theme-primary-lime .mdui-spinner-layer{border-color:#cddc39}.mdui-theme-primary-orange .mdui-spinner-layer{border-color:#ff9800}.mdui-theme-primary-pink .mdui-spinner-layer{border-color:#e91e63}.mdui-theme-primary-purple .mdui-spinner-layer{border-color:#9c27b0}.mdui-theme-primary-red .mdui-spinner-layer{border-color:#f44336}.mdui-theme-primary-teal .mdui-spinner-layer{border-color:#009688}.mdui-theme-primary-yellow .mdui-spinner-layer{border-color:#ffeb3b}.mdui-menu{position:fixed;z-index:99999;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;width:168px;margin:0;padding:8px 0;overflow-y:auto;color:rgba(0,0,0,.87);font-size:16px;list-style:none;background-color:#fff;border-radius:2px;-webkit-transform:scale(0);transform:scale(0);visibility:hidden;opacity:0;-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,visibility,-webkit-transform;transition-property:opacity,visibility,-webkit-transform;transition-property:transform,opacity,visibility;transition-property:transform,opacity,visibility,-webkit-transform;will-change:transform,opacity,visibility;-webkit-overflow-scrolling:touch;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-menu .mdui-divider{margin-top:8px;margin-bottom:8px}.mdui-menu-open{-webkit-transform:scale(1);transform:scale(1);visibility:visible;opacity:1}.mdui-menu-closing{-webkit-transform:scale(1);transform:scale(1);visibility:visible;opacity:0}.mdui-menu-item{position:relative}.mdui-menu-item>a{position:relative;display:block;height:48px;padding:0 16px;color:inherit;line-height:48px;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mdui-menu-item>a:hover{background-color:#eee}.mdui-menu-item>.mdui-menu{position:absolute;-webkit-box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12);box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.mdui-menu-item[disabled]>a{color:rgba(0,0,0,.38)!important;cursor:default}.mdui-menu-item[disabled]>a:hover{background-color:inherit!important}.mdui-menu-item[disabled]>a .mdui-icon{color:rgba(0,0,0,.26)}.mdui-menu-item-active{background-color:#eee}.mdui-menu-item-icon{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;width:40px;padding-right:16px;color:rgba(0,0,0,.54)}.mdui-menu-item-helper{float:right}.mdui-menu-item-more{float:right;width:24px;height:24px;margin:4px 0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' opacity='.54'/%3E%3C/svg%3E")}.mdui-menu-cascade{width:320px;padding:16px 0;overflow-y:visible;font-size:15px}.mdui-menu-cascade>.mdui-menu-item>a{height:32px;padding:0 24px;line-height:32px}.mdui-theme-layout-dark .mdui-menu{color:#fff;background-color:#424242}.mdui-theme-layout-dark .mdui-menu-item>a:hover{background-color:#616161}.mdui-theme-layout-dark .mdui-menu-item[disabled]>a{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-dark .mdui-menu-item[disabled]>a .mdui-icon{color:rgba(255,255,255,.3)}.mdui-theme-layout-dark .mdui-menu-item-active{background-color:#616161}.mdui-theme-layout-dark .mdui-menu-item-icon{color:#fff}.mdui-theme-layout-dark .mdui-menu-item-more{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' fill='%23FFF'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){.mdui-theme-layout-auto .mdui-menu{color:#fff;background-color:#424242}.mdui-theme-layout-auto .mdui-menu-item>a:hover{background-color:#616161}.mdui-theme-layout-auto .mdui-menu-item[disabled]>a{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-auto .mdui-menu-item[disabled]>a .mdui-icon{color:rgba(255,255,255,.3)}.mdui-theme-layout-auto .mdui-menu-item-active{background-color:#616161}.mdui-theme-layout-auto .mdui-menu-item-icon{color:#fff}.mdui-theme-layout-auto .mdui-menu-item-more{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' fill='%23FFF'/%3E%3C/svg%3E")}} -/*# sourceMappingURL=mdui.min.css.map */ diff --git a/css/mdui.min.css.map b/css/mdui.min.css.map deleted file mode 100644 index 2e956d8..0000000 --- a/css/mdui.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["index.css","../node_modules/normalize.css/normalize.css","styles/global.less","styles/mixin/helper.less","styles/mixin/layout-theme.less","styles/variable/animation.less","styles/mixin/color.less","styles/color.less","styles/helper.less","styles/icon.less","styles/material-icons.less","styles/media.less","styles/mixin/media.less","styles/roboto.less","styles/typo-styles.less","styles/mixin/typo.less","styles/typo.less","styles/grid.less","styles/mixin/shadow.less","styles/shadow.less","components/headroom/index.less","components/collapse/index.less","components/panel/index.less","styles/mixin/divider.less","components/table/index.less","components/divider/index.less","components/ripple/index.less","components/textfield/index.less","components/selection_control/checkbox.less","components/selection_control/radio.less","components/selection_control/switch.less","components/slider/index.less","components/button/index.less","components/fab/index.less","components/select/index.less","components/toolbar/index.less","components/appbar/index.less","components/card/index.less","components/tab/index.less","components/subheader/index.less","components/grid_list/index.less","components/list/index.less","components/drawer/index.less","components/dialog/index.less","components/dialog/alert.less","components/dialog/confirm.less","components/dialog/prompt.less","components/tooltip/index.less","components/snackbar/index.less","components/chip/index.less","components/bottom_nav/index.less","components/progress/progress.less","components/progress/spinner.less","components/menu/index.less"],"names":[],"mappings":"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BAAA,kBAzCE,MAAA,eDHH,mDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oDC4CC,iBAAA,kBAzCE,MAAA,eDHH,oDC4CC,iBAAA,kBAzCE,MAAA,eDHH,oDC4CC,iBAAA,kBAzCE,MAAA,eDHH,oDC4CC,iBAAA,kBAzCE,MAAA,eDHH,oDC4CC,iBAAA,kBAzCE,MAAA,eDHH,oDC4CC,iBAAA,kBAzCE,MAAA,eDHH,4CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,2CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,kDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,kDC4CC,iBAAA,kBAzCE,MAAA,eDHH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,4CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,2CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,eAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,6CC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAzCE,MAAA,eDHH,qDC4CC,iBAAA,kBAzCE,MAAA,eDHH,qDC4CC,iBAAA,kBAzCE,MAAA,eDHH,kDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,2CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,6CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,2CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,6CC4CC,iBAAA,kBAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,0CC4CC,iBAAA,kBAzCE,MAAA,eDHH,6CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,2CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,6CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,kDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,wDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,sDC4CC,iBAAA,kBAzCE,MAAA,eDHH,kDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,gDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,mDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,uDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qDC4CC,iBAAA,kBAzCE,MAAA,eDHH,wDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,mDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,+CC4CC,iBAAA,kBAzCE,MAAA,eDHH,mDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,eAzCE,MAAA,eDHH,gDC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,8CC4CC,iBAAA,kBAzCE,MAAA,eDHH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+CC4CC,iBAAA,kBAtCE,MAAA,0BDNH,mDC4CC,iBAAA,eAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,eAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iDC4CC,iBAAA,kBAtCE,MAAA,0BDNH,kBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,iBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,yBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,kBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,iBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,kBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,iBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,eAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,mBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAzCE,MAAA,eDHH,2BC4CC,iBAAA,kBAzCE,MAAA,eDHH,2BC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,2BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,iBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,mBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,iBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,mBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,gBC4CC,iBAAA,kBAzCE,MAAA,eDHH,mBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,oBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAzCE,MAAA,eDHH,iBC4CC,iBAAA,kBAzCE,MAAA,eDHH,oBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,mBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,yBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,+BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAzCE,MAAA,eDHH,6BC4CC,iBAAA,kBAzCE,MAAA,eDHH,+BC4CC,iBAAA,kBAzCE,MAAA,eDHH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAzCE,MAAA,eDHH,6BC4CC,iBAAA,kBAzCE,MAAA,eDHH,6BC4CC,iBAAA,kBAzCE,MAAA,eDHH,yBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,uBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,8BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,4BC4CC,iBAAA,kBAzCE,MAAA,eDHH,+BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,6BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,sBC4CC,iBAAA,kBAzCE,MAAA,eDHH,0BC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,eAzCE,MAAA,eDHH,uBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,qBC4CC,iBAAA,kBAzCE,MAAA,eDHH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,sBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,0BC4CC,iBAAA,eAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,eAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BDNH,wBC4CC,iBAAA,kBAtCE,MAAA,0BCsJJ,kBACE,MAAA,eACA,iBAAA,eAGF,kBACE,MAAA,0BACA,iBAAA,eAGF,wBACE,iBAAA,sBFvKD,iDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,gDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,wDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,iDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,gDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,uDC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,uDC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,iDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,gDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,eD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,kDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,yDC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,uDC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,gDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,kDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,gDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,kDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,+CC4DG,MAAA,kBD5DH,kDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,gDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,kDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,uDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,6DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,6DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,uDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,qDC4DG,MAAA,kBD5DH,wDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,4DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,0DC4DG,MAAA,kBD5DH,6DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,2DC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,wDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,wDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,eD5DH,qDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,mDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,oDC4DG,MAAA,kBD5DH,wDC4DG,MAAA,eD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,eD5DH,sDC4DG,MAAA,kBD5DH,sDC4DG,MAAA,kBD5DH,uBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,sBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,8BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,uBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,sBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,uBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,sBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,eD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,wBC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,gCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,sBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,wBC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,sBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,wBC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,qBC4DG,MAAA,kBD5DH,wBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,sBC4DG,MAAA,kBD5DH,yBC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,wBC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,8BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,oCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,oCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,8BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,4BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,mCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,iCC4DG,MAAA,kBD5DH,oCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,kCC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,eD5DH,4BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,0BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,2BC4DG,MAAA,kBD5DH,+BC4DG,MAAA,eD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,eD5DH,6BC4DG,MAAA,kBD5DH,6BC4DG,MAAA,kBC+PJ,uBACE,MAAA,eAEF,4BPsqIA,4BOpqIE,MAAA,0BAEF,iCPsqIA,iCOpqIE,MAAA,0BAEF,gCPsqIA,gCOpqIE,MAAA,0BAEF,+BPsqIA,+BOpqIE,MAAA,0BAEF,4BPsqIA,4BOpqIE,MAAA,0BAEF,qCPsqIA,qCOpqIE,MAAA,0BAOF,uBACE,MAAA,eAEF,4BACE,MAAA,eAEF,iCACE,MAAA,+BAEF,gCACE,MAAA,+BAEF,+BACE,MAAA,gCAEF,4BACE,MAAA,eAEF,qCACE,MAAA,+BH5WE,oDGoXA,MAAA,eHpXA,yDGuXA,MAAA,+BHvXA,wDG0XA,MAAA,+BH1XA,uDG6XA,MAAA,gCH7XA,oDGgYA,MAAA,eHhYA,6DGmYA,MAAA,+BH9XA,mCACE,oDG8WF,MAAA,eH9WE,yDGiXF,MAAA,+BHjXE,wDGoXF,MAAA,+BHpXE,uDGuXF,MAAA,gCHvXE,oDG0XF,MAAA,eH1XE,6DG6XF,MAAA,gCFrYH,YFEC,OAAA,YEFD,YFKC,WAAA,YELD,YFQC,aAAA,YERD,YFWC,cAAA,YEXD,YFcC,YAAA,YEdD,YFiBC,aAAA,YACA,YAAA,YElBD,YFqBC,WAAA,YACA,cAAA,YEtBD,YF0BC,QAAA,YE1BD,YF6BC,YAAA,YE7BD,YFgCC,cAAA,YEhCD,YFmCC,eAAA,YEnCD,YFsCC,aAAA,YEtCD,YFyCC,cAAA,YACA,aAAA,YE1CD,YF6CC,YAAA,YACA,eAAA,YE9CD,YFEC,OAAA,cEFD,YFKC,WAAA,cELD,YFQC,aAAA,cERD,YFWC,cAAA,cEXD,YFcC,YAAA,cEdD,YFiBC,aAAA,cACA,YAAA,cElBD,YFqBC,WAAA,cACA,cAAA,cEtBD,YF0BC,QAAA,cE1BD,YF6BC,YAAA,cE7BD,YFgCC,cAAA,cEhCD,YFmCC,eAAA,cEnCD,YFsCC,aAAA,cEtCD,YFyCC,cAAA,cACA,aAAA,cE1CD,YF6CC,YAAA,cACA,eAAA,cE9CD,YFEC,OAAA,eEFD,YFKC,WAAA,eELD,YFQC,aAAA,eERD,YFWC,cAAA,eEXD,YFcC,YAAA,eEdD,YFiBC,aAAA,eACA,YAAA,eElBD,YFqBC,WAAA,eACA,cAAA,eEtBD,YF0BC,QAAA,eE1BD,YF6BC,YAAA,eE7BD,YFgCC,cAAA,eEhCD,YFmCC,eAAA,eEnCD,YFsCC,aAAA,eEtCD,YFyCC,cAAA,eACA,aAAA,eE1CD,YF6CC,YAAA,eACA,eAAA,eE9CD,YFEC,OAAA,eEFD,YFKC,WAAA,eELD,YFQC,aAAA,eERD,YFWC,cAAA,eEXD,YFcC,YAAA,eEdD,YFiBC,aAAA,eACA,YAAA,eElBD,YFqBC,WAAA,eACA,cAAA,eEtBD,YF0BC,QAAA,eE1BD,YF6BC,YAAA,eE7BD,YFgCC,cAAA,eEhCD,YFmCC,eAAA,eEnCD,YFsCC,aAAA,eEtCD,YFyCC,cAAA,eACA,aAAA,eE1CD,YF6CC,YAAA,eACA,eAAA,eE9CD,YFEC,OAAA,eEFD,YFKC,WAAA,eELD,YFQC,aAAA,eERD,YFWC,cAAA,eEXD,YFcC,YAAA,eEdD,YFiBC,aAAA,eACA,YAAA,eElBD,YFqBC,WAAA,eACA,cAAA,eEtBD,YF0BC,QAAA,eE1BD,YF6BC,YAAA,eE7BD,YFgCC,cAAA,eEhCD,YFmCC,eAAA,eEnCD,YFsCC,aAAA,eEtCD,YFyCC,cAAA,eACA,aAAA,eE1CD,YF6CC,YAAA,eACA,eAAA,eE9CD,YFEC,OAAA,eEFD,YFKC,WAAA,eELD,YFQC,aAAA,eERD,YFWC,cAAA,eEXD,YFcC,YAAA,eEdD,YFiBC,aAAA,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ZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,MZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,IZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,UZ5DH,gBY+CG,MAAA,KACA,MAAA,KZhDH,uBYqDG,YAAA,KZrDH,0BY2DG,MAAA,KACA,MAAA,UA2EJ,yBZvIC,eY+CG,MAAA,KACA,MAAA,UZhDH,sBYqDG,YAAA,UZrDH,yBY2DG,MAAA,KACA,MAAA,KZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,MZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,IZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,UZ5DH,gBY+CG,MAAA,KACA,MAAA,KZhDH,uBYqDG,YAAA,KZrDH,0BY2DG,MAAA,KACA,MAAA,WA+EJ,0BZ3IC,eY+CG,MAAA,KACA,MAAA,UZhDH,sBYqDG,YAAA,UZrDH,yBY2DG,MAAA,KACA,MAAA,KZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,MZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,IZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,UZ5DH,gBY+CG,MAAA,KACA,MAAA,KZhDH,uBYqDG,YAAA,KZrDH,0BY2DG,MAAA,KACA,MAAA,WAmFJ,0BZ/IC,eY+CG,MAAA,KACA,MAAA,UZhDH,sBYqDG,YAAA,UZrDH,yBY2DG,MAAA,KACA,MAAA,KZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,MZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,IZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,UZ5DH,gBY+CG,MAAA,KACA,MAAA,KZhDH,uBYqDG,YAAA,KZrDH,0BY2DG,MAAA,KACA,MAAA,WAuFJ,0BZnJC,eY+CG,MAAA,KACA,MAAA,UZhDH,sBYqDG,YAAA,UZrDH,yBY2DG,MAAA,KACA,MAAA,KZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,IZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,eY+CG,MAAA,KACA,MAAA,WZhDH,sBYqDG,YAAA,WZrDH,yBY2DG,MAAA,KACA,MAAA,MZ5DH,eY+CG,MAAA,KACA,MAAA,IZhDH,sBYqDG,YAAA,IZrDH,yBY2DG,MAAA,KACA,MAAA,WZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,IZ5DH,gBY+CG,MAAA,KACA,MAAA,WZhDH,uBYqDG,YAAA,WZrDH,0BY2DG,MAAA,KACA,MAAA,UZ5DH,gBY+CG,MAAA,KACA,MAAA,KZhDH,uBYqDG,YAAA,KZrDH,0BY2DG,MAAA,KACA,MAAA,WZ5DH,eaIC,mBAAA,eAAA,WAAA,ebJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,IAAA,EAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,IAAA,EAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,IAAA,EAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,IAAA,EAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,IAAA,EAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,IAAA,EAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,KAAA,EAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,KAAA,EAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,KAAA,EAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,IAAA,EAAA,eAAA,CAAA,EAAA,IAAA,KAAA,EAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,EAAA,eAAA,CAAA,EAAA,IAAA,KAAA,EAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,EAAA,eAAA,CAAA,EAAA,IAAA,KAAA,EAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,eaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,IAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,IAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,IAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,gBaIC,mBAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BAAA,WAAA,EAAA,KAAA,KAAA,KAAA,cAAA,CAAA,EAAA,KAAA,KAAA,IAAA,eAAA,CAAA,EAAA,IAAA,KAAA,IAAA,0BbJD,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,MAAA,EAEF,IACE,KAAA,EACA,MAAA,EAEF,IACE,KAAA,EACA,MAAA,IAEF,KACE,KAAA,KACA,MAAA,GAfJ,6CACE,GACE,KAAA,EACA,MAAA,EAEF,IACE,KAAA,EACA,MAAA,EAEF,IACE,KAAA,EACA,MAAA,IAEF,KACE,KAAA,KACA,MAAA,G9CpFH,yC8CsGO,iBAAA,mB9CtGP,qDL+/YD,uDMn9YE,iBAAA,QD5CD,wC8CsGO,iBAAA,oB9CtGP,oDLsgZD,sDM19YE,iBAAA,QD5CD,6C8CsGO,iBAAA,oB9CtGP,yDL6gZD,2DMj+YE,iBAAA,QD5CD,yC8CsGO,iBAAA,mB9CtGP,qDLohZD,uDMx+YE,iBAAA,QD5CD,wC8CsGO,iBAAA,mB9CtGP,oDL2hZD,sDM/+YE,iBAAA,QD5CD,+C8CsGO,iBAAA,mB9CtGP,2DLkiZD,6DMt/YE,iBAAA,QD5CD,+C8CsGO,iBAAA,oB9CtGP,2DLyiZD,6DM7/YE,iBAAA,QD5CD,yC8CsGO,iBAAA,mB9CtGP,qDLgjZD,uDMpgZE,iBAAA,QD5CD,wC8CsGO,iBAAA,qB9CtGP,oDLujZD,sDM3gZE,iBAAA,QD5CD,0C8CsGO,iBAAA,mB9CtGP,sDL8jZD,wDMlhZE,iBAAA,QD5CD,8C8CsGO,iBAAA,mB9CtGP,0DLqkZD,4DMzhZE,iBAAA,QD5CD,+C8CsGO,iBAAA,oB9CtGP,2DL4kZD,6DMhiZE,iBAAA,QD5CD,wC8CsGO,iBAAA,oB9CtGP,oDLmlZD,sDMviZE,iBAAA,QD5CD,0C8CsGO,iBAAA,mB9CtGP,sDL0lZD,wDM9iZE,iBAAA,QD5CD,wC8CsGO,iBAAA,mB9CtGP,oDLimZD,sDMrjZE,iBAAA,QD5CD,0C8CsGO,iBAAA,oB9CtGP,sDLwmZD,wDM5jZE,iBAAA,QD5CD,uC8CsGO,iBAAA,mB9CtGP,mDL+mZD,qDMnkZE,iBAAA,QD5CD,wC8CsGO,iBAAA,mB9CtGP,oDLsnZD,sDM1kZE,iBAAA,QD5CD,0C8CsGO,iBAAA,oB9CtGP,sDL6nZD,wDMjlZE,iBAAA,Q8CtCF,cACE,SAAA,SACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,kBAAA,aAAA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","file":"mdui.min.css","sourcesContent":["/*!\n * mdui 1.0.0 (https://mdui.org)\n * Copyright 2016-2020 zdhxiong\n * Licensed under MIT\n *//*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/**\n * =============================================================================\n * ************ 公共样式 ************\n * =============================================================================\n */\n* {\n -webkit-tap-highlight-color: transparent;\n}\nbody {\n color: rgba(0, 0, 0, 0.87);\n font-size: 14px;\n font-family: Roboto, Noto, Helvetica, Arial, sans-serif;\n background-color: #fff;\n}\n@media (min-width: 600px) {\n body {\n font-size: 14.5px;\n }\n}\n@media (min-width: 1024px) {\n body {\n font-size: 15px;\n }\n}\nbody *::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: transparent;\n}\n@media (min-width: 1024px) {\n body *::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n}\nbody *::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n}\n/* 锁定屏幕 */\nbody.mdui-locked {\n overflow: hidden;\n}\n/* 遮罩层 */\n.mdui-overlay {\n position: fixed;\n top: -5000px;\n right: -5000px;\n bottom: -5000px;\n left: -5000px;\n z-index: 2000;\n background: rgba(0, 0, 0, 0.4);\n backface-visibility: hidden;\n visibility: hidden;\n opacity: 0;\n transition-duration: 0.3s;\n transition-property: opacity, visibility;\n will-change: opacity;\n}\n/* 显示遮罩层 */\n.mdui-overlay-show {\n visibility: visible;\n opacity: 1;\n}\n/* 取消 transition 过渡效果 */\n.mdui-no-transition {\n transition-property: none !important;\n}\n/**\n * =============================================================================\n * ************ Global dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark {\n color: #fff;\n background-color: #303030;\n}\n.mdui-theme-layout-dark *::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: transparent;\n}\n@media (min-width: 1024px) {\n .mdui-theme-layout-dark *::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n}\n.mdui-theme-layout-dark *::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto {\n color: #fff;\n background-color: #303030;\n }\n .mdui-theme-layout-auto *::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: transparent;\n }\n .mdui-theme-layout-auto *::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n }\n}\n@media (prefers-color-scheme: dark) and (min-width: 1024px) {\n .mdui-theme-layout-auto *::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n}\n/**\n * =============================================================================\n * ************ Color 颜色 ************\n * =============================================================================\n */\n/**\n * .mdui-theme-primary-[color] .mdui-color-theme\n * .mdui-theme-primary-[color] .mdui-color-theme-[degree]\n */\n.mdui-theme-primary-amber .mdui-color-theme {\n background-color: #FFC107 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-50 {\n background-color: #FFF8E1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-100 {\n background-color: #FFECB3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-200 {\n background-color: #FFE082 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-300 {\n background-color: #FFD54F !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-400 {\n background-color: #FFCA28 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-500 {\n background-color: #FFC107 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-600 {\n background-color: #FFB300 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-700 {\n background-color: #FFA000 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-800 {\n background-color: #FF8F00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-amber .mdui-color-theme-900 {\n background-color: #FF6F00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme {\n background-color: #2196F3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-50 {\n background-color: #E3F2FD !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-100 {\n background-color: #BBDEFB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-200 {\n background-color: #90CAF9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-300 {\n background-color: #64B5F6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-400 {\n background-color: #42A5F5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-500 {\n background-color: #2196F3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-600 {\n background-color: #1E88E5 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-700 {\n background-color: #1976D2 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-800 {\n background-color: #1565C0 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue .mdui-color-theme-900 {\n background-color: #0D47A1 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme {\n background-color: #607D8B !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-50 {\n background-color: #ECEFF1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-100 {\n background-color: #CFD8DC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-200 {\n background-color: #B0BEC5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-300 {\n background-color: #90A4AE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-400 {\n background-color: #78909C !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-500 {\n background-color: #607D8B !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-600 {\n background-color: #546E7A !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-700 {\n background-color: #455A64 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-800 {\n background-color: #37474F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-blue-grey .mdui-color-theme-900 {\n background-color: #263238 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme {\n background-color: #795548 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-50 {\n background-color: #EFEBE9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-100 {\n background-color: #D7CCC8 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-200 {\n background-color: #BCAAA4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-300 {\n background-color: #A1887F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-400 {\n background-color: #8D6E63 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-500 {\n background-color: #795548 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-600 {\n background-color: #6D4C41 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-700 {\n background-color: #5D4037 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-800 {\n background-color: #4E342E !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-brown .mdui-color-theme-900 {\n background-color: #3E2723 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme {\n background-color: #00BCD4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-50 {\n background-color: #E0F7FA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-100 {\n background-color: #B2EBF2 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-200 {\n background-color: #80DEEA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-300 {\n background-color: #4DD0E1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-400 {\n background-color: #26C6DA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-500 {\n background-color: #00BCD4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-600 {\n background-color: #00ACC1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-700 {\n background-color: #0097A7 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-800 {\n background-color: #00838F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-cyan .mdui-color-theme-900 {\n background-color: #006064 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme {\n background-color: #FF5722 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-50 {\n background-color: #FBE9E7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-100 {\n background-color: #FFCCBC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-200 {\n background-color: #FFAB91 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-300 {\n background-color: #FF8A65 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-400 {\n background-color: #FF7043 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-500 {\n background-color: #FF5722 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-600 {\n background-color: #F4511E !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-700 {\n background-color: #E64A19 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-800 {\n background-color: #D84315 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-orange .mdui-color-theme-900 {\n background-color: #BF360C !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme {\n background-color: #673AB7 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-50 {\n background-color: #EDE7F6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-100 {\n background-color: #D1C4E9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-200 {\n background-color: #B39DDB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-300 {\n background-color: #9575CD !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-400 {\n background-color: #7E57C2 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-500 {\n background-color: #673AB7 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-600 {\n background-color: #5E35B1 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-700 {\n background-color: #512DA8 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-800 {\n background-color: #4527A0 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-deep-purple .mdui-color-theme-900 {\n background-color: #311B92 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-green .mdui-color-theme {\n background-color: #4CAF50 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-50 {\n background-color: #E8F5E9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-100 {\n background-color: #C8E6C9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-200 {\n background-color: #A5D6A7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-300 {\n background-color: #81C784 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-400 {\n background-color: #66BB6A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-500 {\n background-color: #4CAF50 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-600 {\n background-color: #43A047 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-700 {\n background-color: #388E3C !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-800 {\n background-color: #2E7D32 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-green .mdui-color-theme-900 {\n background-color: #1B5E20 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme {\n background-color: #9E9E9E !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-50 {\n background-color: #FAFAFA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-100 {\n background-color: #F5F5F5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-200 {\n background-color: #EEEEEE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-300 {\n background-color: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-400 {\n background-color: #BDBDBD !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-500 {\n background-color: #9E9E9E !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-600 {\n background-color: #757575 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-700 {\n background-color: #616161 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-800 {\n background-color: #424242 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-grey .mdui-color-theme-900 {\n background-color: #212121 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme {\n background-color: #3F51B5 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-50 {\n background-color: #E8EAF6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-100 {\n background-color: #C5CAE9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-200 {\n background-color: #9FA8DA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-300 {\n background-color: #7986CB !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-400 {\n background-color: #5C6BC0 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-500 {\n background-color: #3F51B5 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-600 {\n background-color: #3949AB !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-700 {\n background-color: #303F9F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-800 {\n background-color: #283593 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-indigo .mdui-color-theme-900 {\n background-color: #1A237E !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme {\n background-color: #03A9F4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-50 {\n background-color: #E1F5FE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-100 {\n background-color: #B3E5FC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-200 {\n background-color: #81D4FA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-300 {\n background-color: #4FC3F7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-400 {\n background-color: #29B6F6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-500 {\n background-color: #03A9F4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-600 {\n background-color: #039BE5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-700 {\n background-color: #0288D1 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-800 {\n background-color: #0277BD !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-light-blue .mdui-color-theme-900 {\n background-color: #01579B !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme {\n background-color: #8BC34A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-50 {\n background-color: #F1F8E9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-100 {\n background-color: #DCEDC8 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-200 {\n background-color: #C5E1A5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-300 {\n background-color: #AED581 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-400 {\n background-color: #9CCC65 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-500 {\n background-color: #8BC34A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-600 {\n background-color: #7CB342 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-700 {\n background-color: #689F38 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-800 {\n background-color: #558B2F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-light-green .mdui-color-theme-900 {\n background-color: #33691E !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme {\n background-color: #CDDC39 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-50 {\n background-color: #F9FBE7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-100 {\n background-color: #F0F4C3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-200 {\n background-color: #E6EE9C !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-300 {\n background-color: #DCE775 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-400 {\n background-color: #D4E157 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-500 {\n background-color: #CDDC39 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-600 {\n background-color: #C0CA33 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-700 {\n background-color: #AFB42B !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-800 {\n background-color: #9E9D24 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-lime .mdui-color-theme-900 {\n background-color: #827717 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme {\n background-color: #FF9800 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-50 {\n background-color: #FFF3E0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-100 {\n background-color: #FFE0B2 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-200 {\n background-color: #FFCC80 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-300 {\n background-color: #FFB74D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-400 {\n background-color: #FFA726 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-500 {\n background-color: #FF9800 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-600 {\n background-color: #FB8C00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-700 {\n background-color: #F57C00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-800 {\n background-color: #EF6C00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-orange .mdui-color-theme-900 {\n background-color: #E65100 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme {\n background-color: #E91E63 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-50 {\n background-color: #FCE4EC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-100 {\n background-color: #F8BBD0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-200 {\n background-color: #F48FB1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-300 {\n background-color: #F06292 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-400 {\n background-color: #EC407A !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-500 {\n background-color: #E91E63 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-600 {\n background-color: #D81B60 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-700 {\n background-color: #C2185B !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-800 {\n background-color: #AD1457 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-pink .mdui-color-theme-900 {\n background-color: #880E4F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme {\n background-color: #9C27B0 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-50 {\n background-color: #F3E5F5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-100 {\n background-color: #E1BEE7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-200 {\n background-color: #CE93D8 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-300 {\n background-color: #BA68C8 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-400 {\n background-color: #AB47BC !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-500 {\n background-color: #9C27B0 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-600 {\n background-color: #8E24AA !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-700 {\n background-color: #7B1FA2 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-800 {\n background-color: #6A1B9A !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-purple .mdui-color-theme-900 {\n background-color: #4A148C !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme {\n background-color: #F44336 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-50 {\n background-color: #FFEBEE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-100 {\n background-color: #FFCDD2 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-200 {\n background-color: #EF9A9A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-300 {\n background-color: #E57373 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-400 {\n background-color: #EF5350 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-500 {\n background-color: #F44336 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-600 {\n background-color: #E53935 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-700 {\n background-color: #D32F2F !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-800 {\n background-color: #C62828 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-red .mdui-color-theme-900 {\n background-color: #B71C1C !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme {\n background-color: #009688 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-50 {\n background-color: #E0F2F1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-100 {\n background-color: #B2DFDB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-200 {\n background-color: #80CBC4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-300 {\n background-color: #4DB6AC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-400 {\n background-color: #26A69A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-500 {\n background-color: #009688 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-600 {\n background-color: #00897B !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-700 {\n background-color: #00796B !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-800 {\n background-color: #00695C !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-teal .mdui-color-theme-900 {\n background-color: #004D40 !important;\n color: #ffffff !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme {\n background-color: #FFEB3B !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-50 {\n background-color: #FFFDE7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-100 {\n background-color: #FFF9C4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-200 {\n background-color: #FFF59D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-300 {\n background-color: #FFF176 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-400 {\n background-color: #FFEE58 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-500 {\n background-color: #FFEB3B !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-600 {\n background-color: #FDD835 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-700 {\n background-color: #FBC02D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-800 {\n background-color: #F9A825 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-primary-yellow .mdui-color-theme-900 {\n background-color: #F57F17 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n/**\n * .mdui-theme-accent-[color] .mdui-color-theme-accent\n * .mdui-theme-accent-[color] .mdui-color-theme-[degree]\n */\n.mdui-theme-accent-amber .mdui-color-theme-accent {\n background-color: #FFD740 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-amber .mdui-color-theme-a100 {\n background-color: #FFE57F !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-amber .mdui-color-theme-a200 {\n background-color: #FFD740 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-amber .mdui-color-theme-a400 {\n background-color: #FFC400 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-amber .mdui-color-theme-a700 {\n background-color: #FFAB00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-blue .mdui-color-theme-accent {\n background-color: #448AFF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-blue .mdui-color-theme-a100 {\n background-color: #82B1FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-blue .mdui-color-theme-a200 {\n background-color: #448AFF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-blue .mdui-color-theme-a400 {\n background-color: #2979FF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-blue .mdui-color-theme-a700 {\n background-color: #2962FF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-cyan .mdui-color-theme-accent {\n background-color: #18FFFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-cyan .mdui-color-theme-a100 {\n background-color: #84FFFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-cyan .mdui-color-theme-a200 {\n background-color: #18FFFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-cyan .mdui-color-theme-a400 {\n background-color: #00E5FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-cyan .mdui-color-theme-a700 {\n background-color: #00B8D4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-deep-orange .mdui-color-theme-accent {\n background-color: #FF6E40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-deep-orange .mdui-color-theme-a100 {\n background-color: #FF9E80 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-deep-orange .mdui-color-theme-a200 {\n background-color: #FF6E40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-deep-orange .mdui-color-theme-a400 {\n background-color: #FF3D00 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-deep-orange .mdui-color-theme-a700 {\n background-color: #DD2C00 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-deep-purple .mdui-color-theme-accent {\n background-color: #7C4DFF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-deep-purple .mdui-color-theme-a100 {\n background-color: #B388FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-deep-purple .mdui-color-theme-a200 {\n background-color: #7C4DFF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-deep-purple .mdui-color-theme-a400 {\n background-color: #651FFF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-deep-purple .mdui-color-theme-a700 {\n background-color: #6200EA !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-green .mdui-color-theme-accent {\n background-color: #69F0AE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-green .mdui-color-theme-a100 {\n background-color: #B9F6CA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-green .mdui-color-theme-a200 {\n background-color: #69F0AE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-green .mdui-color-theme-a400 {\n background-color: #00E676 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-green .mdui-color-theme-a700 {\n background-color: #00C853 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-indigo .mdui-color-theme-accent {\n background-color: #536DFE !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-indigo .mdui-color-theme-a100 {\n background-color: #8C9EFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-indigo .mdui-color-theme-a200 {\n background-color: #536DFE !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-indigo .mdui-color-theme-a400 {\n background-color: #3D5AFE !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-indigo .mdui-color-theme-a700 {\n background-color: #304FFE !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-light-blue .mdui-color-theme-accent {\n background-color: #40C4FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-blue .mdui-color-theme-a100 {\n background-color: #80D8FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-blue .mdui-color-theme-a200 {\n background-color: #40C4FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-blue .mdui-color-theme-a400 {\n background-color: #00B0FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-blue .mdui-color-theme-a700 {\n background-color: #0091EA !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-light-green .mdui-color-theme-accent {\n background-color: #B2FF59 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-green .mdui-color-theme-a100 {\n background-color: #CCFF90 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-green .mdui-color-theme-a200 {\n background-color: #B2FF59 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-green .mdui-color-theme-a400 {\n background-color: #76FF03 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-light-green .mdui-color-theme-a700 {\n background-color: #64DD17 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-lime .mdui-color-theme-accent {\n background-color: #EEFF41 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-lime .mdui-color-theme-a100 {\n background-color: #F4FF81 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-lime .mdui-color-theme-a200 {\n background-color: #EEFF41 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-lime .mdui-color-theme-a400 {\n background-color: #C6FF00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-lime .mdui-color-theme-a700 {\n background-color: #AEEA00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-orange .mdui-color-theme-accent {\n background-color: #FFAB40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-orange .mdui-color-theme-a100 {\n background-color: #FFD180 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-orange .mdui-color-theme-a200 {\n background-color: #FFAB40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-orange .mdui-color-theme-a400 {\n background-color: #FF9100 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-orange .mdui-color-theme-a700 {\n background-color: #FF6D00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-pink .mdui-color-theme-accent {\n background-color: #FF4081 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-pink .mdui-color-theme-a100 {\n background-color: #FF80AB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-pink .mdui-color-theme-a200 {\n background-color: #FF4081 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-pink .mdui-color-theme-a400 {\n background-color: #F50057 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-pink .mdui-color-theme-a700 {\n background-color: #C51162 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-purple .mdui-color-theme-accent {\n background-color: #E040FB !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-purple .mdui-color-theme-a100 {\n background-color: #EA80FC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-purple .mdui-color-theme-a200 {\n background-color: #E040FB !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-purple .mdui-color-theme-a400 {\n background-color: #D500F9 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-purple .mdui-color-theme-a700 {\n background-color: #AA00FF !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-red .mdui-color-theme-accent {\n background-color: #FF5252 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-red .mdui-color-theme-a100 {\n background-color: #FF8A80 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-red .mdui-color-theme-a200 {\n background-color: #FF5252 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-red .mdui-color-theme-a400 {\n background-color: #FF1744 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-red .mdui-color-theme-a700 {\n background-color: #D50000 !important;\n color: #ffffff !important;\n}\n.mdui-theme-accent-teal .mdui-color-theme-accent {\n background-color: #64FFDA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-teal .mdui-color-theme-a100 {\n background-color: #A7FFEB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-teal .mdui-color-theme-a200 {\n background-color: #64FFDA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-teal .mdui-color-theme-a400 {\n background-color: #1DE9B6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-teal .mdui-color-theme-a700 {\n background-color: #00BFA5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-yellow .mdui-color-theme-accent {\n background-color: #FFFF00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-yellow .mdui-color-theme-a100 {\n background-color: #FFFF8D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-yellow .mdui-color-theme-a200 {\n background-color: #FFFF00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-yellow .mdui-color-theme-a400 {\n background-color: #FFEA00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-theme-accent-yellow .mdui-color-theme-a700 {\n background-color: #FFD600 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n/**\n * .mdui-color-[color]\n * .mdui-color-[color]-[degree]\n */\n.mdui-color-amber {\n background-color: #FFC107 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-50 {\n background-color: #FFF8E1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-100 {\n background-color: #FFECB3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-200 {\n background-color: #FFE082 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-300 {\n background-color: #FFD54F !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-400 {\n background-color: #FFCA28 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-500 {\n background-color: #FFC107 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-600 {\n background-color: #FFB300 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-700 {\n background-color: #FFA000 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-800 {\n background-color: #FF8F00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-900 {\n background-color: #FF6F00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue {\n background-color: #2196F3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-50 {\n background-color: #E3F2FD !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-100 {\n background-color: #BBDEFB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-200 {\n background-color: #90CAF9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-300 {\n background-color: #64B5F6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-400 {\n background-color: #42A5F5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-500 {\n background-color: #2196F3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-600 {\n background-color: #1E88E5 !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-700 {\n background-color: #1976D2 !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-800 {\n background-color: #1565C0 !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-900 {\n background-color: #0D47A1 !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey {\n background-color: #607D8B !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey-50 {\n background-color: #ECEFF1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-grey-100 {\n background-color: #CFD8DC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-grey-200 {\n background-color: #B0BEC5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-grey-300 {\n background-color: #90A4AE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-grey-400 {\n background-color: #78909C !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey-500 {\n background-color: #607D8B !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey-600 {\n background-color: #546E7A !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey-700 {\n background-color: #455A64 !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey-800 {\n background-color: #37474F !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-grey-900 {\n background-color: #263238 !important;\n color: #ffffff !important;\n}\n.mdui-color-brown {\n background-color: #795548 !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-50 {\n background-color: #EFEBE9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-brown-100 {\n background-color: #D7CCC8 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-brown-200 {\n background-color: #BCAAA4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-brown-300 {\n background-color: #A1887F !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-400 {\n background-color: #8D6E63 !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-500 {\n background-color: #795548 !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-600 {\n background-color: #6D4C41 !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-700 {\n background-color: #5D4037 !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-800 {\n background-color: #4E342E !important;\n color: #ffffff !important;\n}\n.mdui-color-brown-900 {\n background-color: #3E2723 !important;\n color: #ffffff !important;\n}\n.mdui-color-cyan {\n background-color: #00BCD4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-50 {\n background-color: #E0F7FA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-100 {\n background-color: #B2EBF2 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-200 {\n background-color: #80DEEA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-300 {\n background-color: #4DD0E1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-400 {\n background-color: #26C6DA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-500 {\n background-color: #00BCD4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-600 {\n background-color: #00ACC1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-700 {\n background-color: #0097A7 !important;\n color: #ffffff !important;\n}\n.mdui-color-cyan-800 {\n background-color: #00838F !important;\n color: #ffffff !important;\n}\n.mdui-color-cyan-900 {\n background-color: #006064 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-orange {\n background-color: #FF5722 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-50 {\n background-color: #FBE9E7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-100 {\n background-color: #FFCCBC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-200 {\n background-color: #FFAB91 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-300 {\n background-color: #FF8A65 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-400 {\n background-color: #FF7043 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-500 {\n background-color: #FF5722 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-600 {\n background-color: #F4511E !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-orange-700 {\n background-color: #E64A19 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-orange-800 {\n background-color: #D84315 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-orange-900 {\n background-color: #BF360C !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple {\n background-color: #673AB7 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-50 {\n background-color: #EDE7F6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-purple-100 {\n background-color: #D1C4E9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-purple-200 {\n background-color: #B39DDB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-purple-300 {\n background-color: #9575CD !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-400 {\n background-color: #7E57C2 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-500 {\n background-color: #673AB7 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-600 {\n background-color: #5E35B1 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-700 {\n background-color: #512DA8 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-800 {\n background-color: #4527A0 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-900 {\n background-color: #311B92 !important;\n color: #ffffff !important;\n}\n.mdui-color-green {\n background-color: #4CAF50 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-50 {\n background-color: #E8F5E9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-100 {\n background-color: #C8E6C9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-200 {\n background-color: #A5D6A7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-300 {\n background-color: #81C784 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-400 {\n background-color: #66BB6A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-500 {\n background-color: #4CAF50 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-600 {\n background-color: #43A047 !important;\n color: #ffffff !important;\n}\n.mdui-color-green-700 {\n background-color: #388E3C !important;\n color: #ffffff !important;\n}\n.mdui-color-green-800 {\n background-color: #2E7D32 !important;\n color: #ffffff !important;\n}\n.mdui-color-green-900 {\n background-color: #1B5E20 !important;\n color: #ffffff !important;\n}\n.mdui-color-grey {\n background-color: #9E9E9E !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-50 {\n background-color: #FAFAFA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-100 {\n background-color: #F5F5F5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-200 {\n background-color: #EEEEEE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-300 {\n background-color: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-400 {\n background-color: #BDBDBD !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-500 {\n background-color: #9E9E9E !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-grey-600 {\n background-color: #757575 !important;\n color: #ffffff !important;\n}\n.mdui-color-grey-700 {\n background-color: #616161 !important;\n color: #ffffff !important;\n}\n.mdui-color-grey-800 {\n background-color: #424242 !important;\n color: #ffffff !important;\n}\n.mdui-color-grey-900 {\n background-color: #212121 !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo {\n background-color: #3F51B5 !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-50 {\n background-color: #E8EAF6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-indigo-100 {\n background-color: #C5CAE9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-indigo-200 {\n background-color: #9FA8DA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-indigo-300 {\n background-color: #7986CB !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-400 {\n background-color: #5C6BC0 !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-500 {\n background-color: #3F51B5 !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-600 {\n background-color: #3949AB !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-700 {\n background-color: #303F9F !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-800 {\n background-color: #283593 !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-900 {\n background-color: #1A237E !important;\n color: #ffffff !important;\n}\n.mdui-color-light-blue {\n background-color: #03A9F4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-50 {\n background-color: #E1F5FE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-100 {\n background-color: #B3E5FC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-200 {\n background-color: #81D4FA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-300 {\n background-color: #4FC3F7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-400 {\n background-color: #29B6F6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-500 {\n background-color: #03A9F4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-600 {\n background-color: #039BE5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-700 {\n background-color: #0288D1 !important;\n color: #ffffff !important;\n}\n.mdui-color-light-blue-800 {\n background-color: #0277BD !important;\n color: #ffffff !important;\n}\n.mdui-color-light-blue-900 {\n background-color: #01579B !important;\n color: #ffffff !important;\n}\n.mdui-color-light-green {\n background-color: #8BC34A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-50 {\n background-color: #F1F8E9 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-100 {\n background-color: #DCEDC8 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-200 {\n background-color: #C5E1A5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-300 {\n background-color: #AED581 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-400 {\n background-color: #9CCC65 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-500 {\n background-color: #8BC34A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-600 {\n background-color: #7CB342 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-700 {\n background-color: #689F38 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-800 {\n background-color: #558B2F !important;\n color: #ffffff !important;\n}\n.mdui-color-light-green-900 {\n background-color: #33691E !important;\n color: #ffffff !important;\n}\n.mdui-color-lime {\n background-color: #CDDC39 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-50 {\n background-color: #F9FBE7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-100 {\n background-color: #F0F4C3 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-200 {\n background-color: #E6EE9C !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-300 {\n background-color: #DCE775 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-400 {\n background-color: #D4E157 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-500 {\n background-color: #CDDC39 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-600 {\n background-color: #C0CA33 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-700 {\n background-color: #AFB42B !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-800 {\n background-color: #9E9D24 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-900 {\n background-color: #827717 !important;\n color: #ffffff !important;\n}\n.mdui-color-orange {\n background-color: #FF9800 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-50 {\n background-color: #FFF3E0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-100 {\n background-color: #FFE0B2 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-200 {\n background-color: #FFCC80 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-300 {\n background-color: #FFB74D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-400 {\n background-color: #FFA726 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-500 {\n background-color: #FF9800 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-600 {\n background-color: #FB8C00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-700 {\n background-color: #F57C00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-800 {\n background-color: #EF6C00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-900 {\n background-color: #E65100 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink {\n background-color: #E91E63 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-50 {\n background-color: #FCE4EC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-pink-100 {\n background-color: #F8BBD0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-pink-200 {\n background-color: #F48FB1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-pink-300 {\n background-color: #F06292 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-pink-400 {\n background-color: #EC407A !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-500 {\n background-color: #E91E63 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-600 {\n background-color: #D81B60 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-700 {\n background-color: #C2185B !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-800 {\n background-color: #AD1457 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-900 {\n background-color: #880E4F !important;\n color: #ffffff !important;\n}\n.mdui-color-purple {\n background-color: #9C27B0 !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-50 {\n background-color: #F3E5F5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-purple-100 {\n background-color: #E1BEE7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-purple-200 {\n background-color: #CE93D8 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-purple-300 {\n background-color: #BA68C8 !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-400 {\n background-color: #AB47BC !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-500 {\n background-color: #9C27B0 !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-600 {\n background-color: #8E24AA !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-700 {\n background-color: #7B1FA2 !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-800 {\n background-color: #6A1B9A !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-900 {\n background-color: #4A148C !important;\n color: #ffffff !important;\n}\n.mdui-color-red {\n background-color: #F44336 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-50 {\n background-color: #FFEBEE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-red-100 {\n background-color: #FFCDD2 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-red-200 {\n background-color: #EF9A9A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-red-300 {\n background-color: #E57373 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-red-400 {\n background-color: #EF5350 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-500 {\n background-color: #F44336 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-600 {\n background-color: #E53935 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-700 {\n background-color: #D32F2F !important;\n color: #ffffff !important;\n}\n.mdui-color-red-800 {\n background-color: #C62828 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-900 {\n background-color: #B71C1C !important;\n color: #ffffff !important;\n}\n.mdui-color-teal {\n background-color: #009688 !important;\n color: #ffffff !important;\n}\n.mdui-color-teal-50 {\n background-color: #E0F2F1 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-100 {\n background-color: #B2DFDB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-200 {\n background-color: #80CBC4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-300 {\n background-color: #4DB6AC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-400 {\n background-color: #26A69A !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-500 {\n background-color: #009688 !important;\n color: #ffffff !important;\n}\n.mdui-color-teal-600 {\n background-color: #00897B !important;\n color: #ffffff !important;\n}\n.mdui-color-teal-700 {\n background-color: #00796B !important;\n color: #ffffff !important;\n}\n.mdui-color-teal-800 {\n background-color: #00695C !important;\n color: #ffffff !important;\n}\n.mdui-color-teal-900 {\n background-color: #004D40 !important;\n color: #ffffff !important;\n}\n.mdui-color-yellow {\n background-color: #FFEB3B !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-50 {\n background-color: #FFFDE7 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-100 {\n background-color: #FFF9C4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-200 {\n background-color: #FFF59D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-300 {\n background-color: #FFF176 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-400 {\n background-color: #FFEE58 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-500 {\n background-color: #FFEB3B !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-600 {\n background-color: #FDD835 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-700 {\n background-color: #FBC02D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-800 {\n background-color: #F9A825 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-900 {\n background-color: #F57F17 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n/**\n * .mdui-color-[color]-accent\n * .mdui-color-[color]-[degree]\n */\n.mdui-color-amber-accent {\n background-color: #FFD740 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-a100 {\n background-color: #FFE57F !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-a200 {\n background-color: #FFD740 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-a400 {\n background-color: #FFC400 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-amber-a700 {\n background-color: #FFAB00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-accent {\n background-color: #448AFF !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-a100 {\n background-color: #82B1FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-blue-a200 {\n background-color: #448AFF !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-a400 {\n background-color: #2979FF !important;\n color: #ffffff !important;\n}\n.mdui-color-blue-a700 {\n background-color: #2962FF !important;\n color: #ffffff !important;\n}\n.mdui-color-cyan-accent {\n background-color: #18FFFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-a100 {\n background-color: #84FFFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-a200 {\n background-color: #18FFFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-a400 {\n background-color: #00E5FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-cyan-a700 {\n background-color: #00B8D4 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-accent {\n background-color: #FF6E40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-a100 {\n background-color: #FF9E80 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-a200 {\n background-color: #FF6E40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-orange-a400 {\n background-color: #FF3D00 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-orange-a700 {\n background-color: #DD2C00 !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-accent {\n background-color: #7C4DFF !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-a100 {\n background-color: #B388FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-deep-purple-a200 {\n background-color: #7C4DFF !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-a400 {\n background-color: #651FFF !important;\n color: #ffffff !important;\n}\n.mdui-color-deep-purple-a700 {\n background-color: #6200EA !important;\n color: #ffffff !important;\n}\n.mdui-color-green-accent {\n background-color: #69F0AE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-a100 {\n background-color: #B9F6CA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-a200 {\n background-color: #69F0AE !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-a400 {\n background-color: #00E676 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-green-a700 {\n background-color: #00C853 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-indigo-accent {\n background-color: #536DFE !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-a100 {\n background-color: #8C9EFF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-indigo-a200 {\n background-color: #536DFE !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-a400 {\n background-color: #3D5AFE !important;\n color: #ffffff !important;\n}\n.mdui-color-indigo-a700 {\n background-color: #304FFE !important;\n color: #ffffff !important;\n}\n.mdui-color-light-blue-accent {\n background-color: #40C4FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-a100 {\n background-color: #80D8FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-a200 {\n background-color: #40C4FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-a400 {\n background-color: #00B0FF !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-blue-a700 {\n background-color: #0091EA !important;\n color: #ffffff !important;\n}\n.mdui-color-light-green-accent {\n background-color: #B2FF59 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-a100 {\n background-color: #CCFF90 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-a200 {\n background-color: #B2FF59 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-a400 {\n background-color: #76FF03 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-light-green-a700 {\n background-color: #64DD17 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-accent {\n background-color: #EEFF41 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-a100 {\n background-color: #F4FF81 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-a200 {\n background-color: #EEFF41 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-a400 {\n background-color: #C6FF00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-lime-a700 {\n background-color: #AEEA00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-accent {\n background-color: #FFAB40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-a100 {\n background-color: #FFD180 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-a200 {\n background-color: #FFAB40 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-a400 {\n background-color: #FF9100 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-orange-a700 {\n background-color: #FF6D00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-pink-accent {\n background-color: #FF4081 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-a100 {\n background-color: #FF80AB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-pink-a200 {\n background-color: #FF4081 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-a400 {\n background-color: #F50057 !important;\n color: #ffffff !important;\n}\n.mdui-color-pink-a700 {\n background-color: #C51162 !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-accent {\n background-color: #E040FB !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-a100 {\n background-color: #EA80FC !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-purple-a200 {\n background-color: #E040FB !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-a400 {\n background-color: #D500F9 !important;\n color: #ffffff !important;\n}\n.mdui-color-purple-a700 {\n background-color: #AA00FF !important;\n color: #ffffff !important;\n}\n.mdui-color-red-accent {\n background-color: #FF5252 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-a100 {\n background-color: #FF8A80 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-red-a200 {\n background-color: #FF5252 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-a400 {\n background-color: #FF1744 !important;\n color: #ffffff !important;\n}\n.mdui-color-red-a700 {\n background-color: #D50000 !important;\n color: #ffffff !important;\n}\n.mdui-color-teal-accent {\n background-color: #64FFDA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-a100 {\n background-color: #A7FFEB !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-a200 {\n background-color: #64FFDA !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-a400 {\n background-color: #1DE9B6 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-teal-a700 {\n background-color: #00BFA5 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-accent {\n background-color: #FFFF00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-a100 {\n background-color: #FFFF8D !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-a200 {\n background-color: #FFFF00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-a400 {\n background-color: #FFEA00 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-color-yellow-a700 {\n background-color: #FFD600 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n/**\n * .mdui-color-black\n * .mdui-color-white\n * .mdui-color-transparent\n */\n.mdui-color-black {\n color: #ffffff !important;\n background-color: #000000 !important;\n}\n.mdui-color-white {\n color: rgba(0, 0, 0, 0.87) !important;\n background-color: #FFFFFF !important;\n}\n.mdui-color-transparent {\n background-color: transparent !important;\n}\n/**\n * .mdui-theme-primary-[color] .mdui-text-color-theme\n * .mdui-theme-primary-[color] .mdui-text-color-theme-[degree]\n */\n.mdui-theme-primary-amber .mdui-text-color-theme {\n color: #FFC107 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-50 {\n color: #FFF8E1 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-100 {\n color: #FFECB3 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-200 {\n color: #FFE082 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-300 {\n color: #FFD54F !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-400 {\n color: #FFCA28 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-500 {\n color: #FFC107 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-600 {\n color: #FFB300 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-700 {\n color: #FFA000 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-800 {\n color: #FF8F00 !important;\n}\n.mdui-theme-primary-amber .mdui-text-color-theme-900 {\n color: #FF6F00 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme {\n color: #2196F3 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-50 {\n color: #E3F2FD !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-100 {\n color: #BBDEFB !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-200 {\n color: #90CAF9 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-300 {\n color: #64B5F6 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-400 {\n color: #42A5F5 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-500 {\n color: #2196F3 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-600 {\n color: #1E88E5 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-700 {\n color: #1976D2 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-800 {\n color: #1565C0 !important;\n}\n.mdui-theme-primary-blue .mdui-text-color-theme-900 {\n color: #0D47A1 !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme {\n color: #607D8B !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-50 {\n color: #ECEFF1 !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-100 {\n color: #CFD8DC !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-200 {\n color: #B0BEC5 !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-300 {\n color: #90A4AE !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-400 {\n color: #78909C !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-500 {\n color: #607D8B !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-600 {\n color: #546E7A !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-700 {\n color: #455A64 !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-800 {\n color: #37474F !important;\n}\n.mdui-theme-primary-blue-grey .mdui-text-color-theme-900 {\n color: #263238 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme {\n color: #795548 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-50 {\n color: #EFEBE9 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-100 {\n color: #D7CCC8 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-200 {\n color: #BCAAA4 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-300 {\n color: #A1887F !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-400 {\n color: #8D6E63 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-500 {\n color: #795548 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-600 {\n color: #6D4C41 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-700 {\n color: #5D4037 !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-800 {\n color: #4E342E !important;\n}\n.mdui-theme-primary-brown .mdui-text-color-theme-900 {\n color: #3E2723 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme {\n color: #00BCD4 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-50 {\n color: #E0F7FA !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-100 {\n color: #B2EBF2 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-200 {\n color: #80DEEA !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-300 {\n color: #4DD0E1 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-400 {\n color: #26C6DA !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-500 {\n color: #00BCD4 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-600 {\n color: #00ACC1 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-700 {\n color: #0097A7 !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-800 {\n color: #00838F !important;\n}\n.mdui-theme-primary-cyan .mdui-text-color-theme-900 {\n color: #006064 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme {\n color: #FF5722 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-50 {\n color: #FBE9E7 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-100 {\n color: #FFCCBC !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-200 {\n color: #FFAB91 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-300 {\n color: #FF8A65 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-400 {\n color: #FF7043 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-500 {\n color: #FF5722 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-600 {\n color: #F4511E !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-700 {\n color: #E64A19 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-800 {\n color: #D84315 !important;\n}\n.mdui-theme-primary-deep-orange .mdui-text-color-theme-900 {\n color: #BF360C !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme {\n color: #673AB7 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-50 {\n color: #EDE7F6 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-100 {\n color: #D1C4E9 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-200 {\n color: #B39DDB !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-300 {\n color: #9575CD !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-400 {\n color: #7E57C2 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-500 {\n color: #673AB7 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-600 {\n color: #5E35B1 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-700 {\n color: #512DA8 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-800 {\n color: #4527A0 !important;\n}\n.mdui-theme-primary-deep-purple .mdui-text-color-theme-900 {\n color: #311B92 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme {\n color: #4CAF50 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-50 {\n color: #E8F5E9 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-100 {\n color: #C8E6C9 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-200 {\n color: #A5D6A7 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-300 {\n color: #81C784 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-400 {\n color: #66BB6A !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-500 {\n color: #4CAF50 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-600 {\n color: #43A047 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-700 {\n color: #388E3C !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-800 {\n color: #2E7D32 !important;\n}\n.mdui-theme-primary-green .mdui-text-color-theme-900 {\n color: #1B5E20 !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme {\n color: #9E9E9E !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-50 {\n color: #FAFAFA !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-100 {\n color: #F5F5F5 !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-200 {\n color: #EEEEEE !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-300 {\n color: #E0E0E0 !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-400 {\n color: #BDBDBD !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-500 {\n color: #9E9E9E !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-600 {\n color: #757575 !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-700 {\n color: #616161 !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-800 {\n color: #424242 !important;\n}\n.mdui-theme-primary-grey .mdui-text-color-theme-900 {\n color: #212121 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme {\n color: #3F51B5 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-50 {\n color: #E8EAF6 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-100 {\n color: #C5CAE9 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-200 {\n color: #9FA8DA !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-300 {\n color: #7986CB !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-400 {\n color: #5C6BC0 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-500 {\n color: #3F51B5 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-600 {\n color: #3949AB !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-700 {\n color: #303F9F !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-800 {\n color: #283593 !important;\n}\n.mdui-theme-primary-indigo .mdui-text-color-theme-900 {\n color: #1A237E !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme {\n color: #03A9F4 !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-50 {\n color: #E1F5FE !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-100 {\n color: #B3E5FC !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-200 {\n color: #81D4FA !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-300 {\n color: #4FC3F7 !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-400 {\n color: #29B6F6 !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-500 {\n color: #03A9F4 !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-600 {\n color: #039BE5 !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-700 {\n color: #0288D1 !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-800 {\n color: #0277BD !important;\n}\n.mdui-theme-primary-light-blue .mdui-text-color-theme-900 {\n color: #01579B !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme {\n color: #8BC34A !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-50 {\n color: #F1F8E9 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-100 {\n color: #DCEDC8 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-200 {\n color: #C5E1A5 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-300 {\n color: #AED581 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-400 {\n color: #9CCC65 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-500 {\n color: #8BC34A !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-600 {\n color: #7CB342 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-700 {\n color: #689F38 !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-800 {\n color: #558B2F !important;\n}\n.mdui-theme-primary-light-green .mdui-text-color-theme-900 {\n color: #33691E !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme {\n color: #CDDC39 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-50 {\n color: #F9FBE7 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-100 {\n color: #F0F4C3 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-200 {\n color: #E6EE9C !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-300 {\n color: #DCE775 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-400 {\n color: #D4E157 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-500 {\n color: #CDDC39 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-600 {\n color: #C0CA33 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-700 {\n color: #AFB42B !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-800 {\n color: #9E9D24 !important;\n}\n.mdui-theme-primary-lime .mdui-text-color-theme-900 {\n color: #827717 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme {\n color: #FF9800 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-50 {\n color: #FFF3E0 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-100 {\n color: #FFE0B2 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-200 {\n color: #FFCC80 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-300 {\n color: #FFB74D !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-400 {\n color: #FFA726 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-500 {\n color: #FF9800 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-600 {\n color: #FB8C00 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-700 {\n color: #F57C00 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-800 {\n color: #EF6C00 !important;\n}\n.mdui-theme-primary-orange .mdui-text-color-theme-900 {\n color: #E65100 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme {\n color: #E91E63 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-50 {\n color: #FCE4EC !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-100 {\n color: #F8BBD0 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-200 {\n color: #F48FB1 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-300 {\n color: #F06292 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-400 {\n color: #EC407A !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-500 {\n color: #E91E63 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-600 {\n color: #D81B60 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-700 {\n color: #C2185B !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-800 {\n color: #AD1457 !important;\n}\n.mdui-theme-primary-pink .mdui-text-color-theme-900 {\n color: #880E4F !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme {\n color: #9C27B0 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-50 {\n color: #F3E5F5 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-100 {\n color: #E1BEE7 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-200 {\n color: #CE93D8 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-300 {\n color: #BA68C8 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-400 {\n color: #AB47BC !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-500 {\n color: #9C27B0 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-600 {\n color: #8E24AA !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-700 {\n color: #7B1FA2 !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-800 {\n color: #6A1B9A !important;\n}\n.mdui-theme-primary-purple .mdui-text-color-theme-900 {\n color: #4A148C !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme {\n color: #F44336 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-50 {\n color: #FFEBEE !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-100 {\n color: #FFCDD2 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-200 {\n color: #EF9A9A !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-300 {\n color: #E57373 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-400 {\n color: #EF5350 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-500 {\n color: #F44336 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-600 {\n color: #E53935 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-700 {\n color: #D32F2F !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-800 {\n color: #C62828 !important;\n}\n.mdui-theme-primary-red .mdui-text-color-theme-900 {\n color: #B71C1C !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme {\n color: #009688 !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-50 {\n color: #E0F2F1 !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-100 {\n color: #B2DFDB !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-200 {\n color: #80CBC4 !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-300 {\n color: #4DB6AC !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-400 {\n color: #26A69A !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-500 {\n color: #009688 !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-600 {\n color: #00897B !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-700 {\n color: #00796B !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-800 {\n color: #00695C !important;\n}\n.mdui-theme-primary-teal .mdui-text-color-theme-900 {\n color: #004D40 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme {\n color: #FFEB3B !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-50 {\n color: #FFFDE7 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-100 {\n color: #FFF9C4 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-200 {\n color: #FFF59D !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-300 {\n color: #FFF176 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-400 {\n color: #FFEE58 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-500 {\n color: #FFEB3B !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-600 {\n color: #FDD835 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-700 {\n color: #FBC02D !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-800 {\n color: #F9A825 !important;\n}\n.mdui-theme-primary-yellow .mdui-text-color-theme-900 {\n color: #F57F17 !important;\n}\n/**\n * .mdui-theme-accent-[color] .mdui-text-color-theme-accent\n * .mdui-theme-accent-[color] .mdui-text-color-theme-[degree]\n */\n.mdui-theme-accent-amber .mdui-text-color-theme-accent {\n color: #FFD740 !important;\n}\n.mdui-theme-accent-amber .mdui-text-color-theme-a100 {\n color: #FFE57F !important;\n}\n.mdui-theme-accent-amber .mdui-text-color-theme-a200 {\n color: #FFD740 !important;\n}\n.mdui-theme-accent-amber .mdui-text-color-theme-a400 {\n color: #FFC400 !important;\n}\n.mdui-theme-accent-amber .mdui-text-color-theme-a700 {\n color: #FFAB00 !important;\n}\n.mdui-theme-accent-blue .mdui-text-color-theme-accent {\n color: #448AFF !important;\n}\n.mdui-theme-accent-blue .mdui-text-color-theme-a100 {\n color: #82B1FF !important;\n}\n.mdui-theme-accent-blue .mdui-text-color-theme-a200 {\n color: #448AFF !important;\n}\n.mdui-theme-accent-blue .mdui-text-color-theme-a400 {\n color: #2979FF !important;\n}\n.mdui-theme-accent-blue .mdui-text-color-theme-a700 {\n color: #2962FF !important;\n}\n.mdui-theme-accent-cyan .mdui-text-color-theme-accent {\n color: #18FFFF !important;\n}\n.mdui-theme-accent-cyan .mdui-text-color-theme-a100 {\n color: #84FFFF !important;\n}\n.mdui-theme-accent-cyan .mdui-text-color-theme-a200 {\n color: #18FFFF !important;\n}\n.mdui-theme-accent-cyan .mdui-text-color-theme-a400 {\n color: #00E5FF !important;\n}\n.mdui-theme-accent-cyan .mdui-text-color-theme-a700 {\n color: #00B8D4 !important;\n}\n.mdui-theme-accent-deep-orange .mdui-text-color-theme-accent {\n color: #FF6E40 !important;\n}\n.mdui-theme-accent-deep-orange .mdui-text-color-theme-a100 {\n color: #FF9E80 !important;\n}\n.mdui-theme-accent-deep-orange .mdui-text-color-theme-a200 {\n color: #FF6E40 !important;\n}\n.mdui-theme-accent-deep-orange .mdui-text-color-theme-a400 {\n color: #FF3D00 !important;\n}\n.mdui-theme-accent-deep-orange .mdui-text-color-theme-a700 {\n color: #DD2C00 !important;\n}\n.mdui-theme-accent-deep-purple .mdui-text-color-theme-accent {\n color: #7C4DFF !important;\n}\n.mdui-theme-accent-deep-purple .mdui-text-color-theme-a100 {\n color: #B388FF !important;\n}\n.mdui-theme-accent-deep-purple .mdui-text-color-theme-a200 {\n color: #7C4DFF !important;\n}\n.mdui-theme-accent-deep-purple .mdui-text-color-theme-a400 {\n color: #651FFF !important;\n}\n.mdui-theme-accent-deep-purple .mdui-text-color-theme-a700 {\n color: #6200EA !important;\n}\n.mdui-theme-accent-green .mdui-text-color-theme-accent {\n color: #69F0AE !important;\n}\n.mdui-theme-accent-green .mdui-text-color-theme-a100 {\n color: #B9F6CA !important;\n}\n.mdui-theme-accent-green .mdui-text-color-theme-a200 {\n color: #69F0AE !important;\n}\n.mdui-theme-accent-green .mdui-text-color-theme-a400 {\n color: #00E676 !important;\n}\n.mdui-theme-accent-green .mdui-text-color-theme-a700 {\n color: #00C853 !important;\n}\n.mdui-theme-accent-indigo .mdui-text-color-theme-accent {\n color: #536DFE !important;\n}\n.mdui-theme-accent-indigo .mdui-text-color-theme-a100 {\n color: #8C9EFF !important;\n}\n.mdui-theme-accent-indigo .mdui-text-color-theme-a200 {\n color: #536DFE !important;\n}\n.mdui-theme-accent-indigo .mdui-text-color-theme-a400 {\n color: #3D5AFE !important;\n}\n.mdui-theme-accent-indigo .mdui-text-color-theme-a700 {\n color: #304FFE !important;\n}\n.mdui-theme-accent-light-blue .mdui-text-color-theme-accent {\n color: #40C4FF !important;\n}\n.mdui-theme-accent-light-blue .mdui-text-color-theme-a100 {\n color: #80D8FF !important;\n}\n.mdui-theme-accent-light-blue .mdui-text-color-theme-a200 {\n color: #40C4FF !important;\n}\n.mdui-theme-accent-light-blue .mdui-text-color-theme-a400 {\n color: #00B0FF !important;\n}\n.mdui-theme-accent-light-blue .mdui-text-color-theme-a700 {\n color: #0091EA !important;\n}\n.mdui-theme-accent-light-green .mdui-text-color-theme-accent {\n color: #B2FF59 !important;\n}\n.mdui-theme-accent-light-green .mdui-text-color-theme-a100 {\n color: #CCFF90 !important;\n}\n.mdui-theme-accent-light-green .mdui-text-color-theme-a200 {\n color: #B2FF59 !important;\n}\n.mdui-theme-accent-light-green .mdui-text-color-theme-a400 {\n color: #76FF03 !important;\n}\n.mdui-theme-accent-light-green .mdui-text-color-theme-a700 {\n color: #64DD17 !important;\n}\n.mdui-theme-accent-lime .mdui-text-color-theme-accent {\n color: #EEFF41 !important;\n}\n.mdui-theme-accent-lime .mdui-text-color-theme-a100 {\n color: #F4FF81 !important;\n}\n.mdui-theme-accent-lime .mdui-text-color-theme-a200 {\n color: #EEFF41 !important;\n}\n.mdui-theme-accent-lime .mdui-text-color-theme-a400 {\n color: #C6FF00 !important;\n}\n.mdui-theme-accent-lime .mdui-text-color-theme-a700 {\n color: #AEEA00 !important;\n}\n.mdui-theme-accent-orange .mdui-text-color-theme-accent {\n color: #FFAB40 !important;\n}\n.mdui-theme-accent-orange .mdui-text-color-theme-a100 {\n color: #FFD180 !important;\n}\n.mdui-theme-accent-orange .mdui-text-color-theme-a200 {\n color: #FFAB40 !important;\n}\n.mdui-theme-accent-orange .mdui-text-color-theme-a400 {\n color: #FF9100 !important;\n}\n.mdui-theme-accent-orange .mdui-text-color-theme-a700 {\n color: #FF6D00 !important;\n}\n.mdui-theme-accent-pink .mdui-text-color-theme-accent {\n color: #FF4081 !important;\n}\n.mdui-theme-accent-pink .mdui-text-color-theme-a100 {\n color: #FF80AB !important;\n}\n.mdui-theme-accent-pink .mdui-text-color-theme-a200 {\n color: #FF4081 !important;\n}\n.mdui-theme-accent-pink .mdui-text-color-theme-a400 {\n color: #F50057 !important;\n}\n.mdui-theme-accent-pink .mdui-text-color-theme-a700 {\n color: #C51162 !important;\n}\n.mdui-theme-accent-purple .mdui-text-color-theme-accent {\n color: #E040FB !important;\n}\n.mdui-theme-accent-purple .mdui-text-color-theme-a100 {\n color: #EA80FC !important;\n}\n.mdui-theme-accent-purple .mdui-text-color-theme-a200 {\n color: #E040FB !important;\n}\n.mdui-theme-accent-purple .mdui-text-color-theme-a400 {\n color: #D500F9 !important;\n}\n.mdui-theme-accent-purple .mdui-text-color-theme-a700 {\n color: #AA00FF !important;\n}\n.mdui-theme-accent-red .mdui-text-color-theme-accent {\n color: #FF5252 !important;\n}\n.mdui-theme-accent-red .mdui-text-color-theme-a100 {\n color: #FF8A80 !important;\n}\n.mdui-theme-accent-red .mdui-text-color-theme-a200 {\n color: #FF5252 !important;\n}\n.mdui-theme-accent-red .mdui-text-color-theme-a400 {\n color: #FF1744 !important;\n}\n.mdui-theme-accent-red .mdui-text-color-theme-a700 {\n color: #D50000 !important;\n}\n.mdui-theme-accent-teal .mdui-text-color-theme-accent {\n color: #64FFDA !important;\n}\n.mdui-theme-accent-teal .mdui-text-color-theme-a100 {\n color: #A7FFEB !important;\n}\n.mdui-theme-accent-teal .mdui-text-color-theme-a200 {\n color: #64FFDA !important;\n}\n.mdui-theme-accent-teal .mdui-text-color-theme-a400 {\n color: #1DE9B6 !important;\n}\n.mdui-theme-accent-teal .mdui-text-color-theme-a700 {\n color: #00BFA5 !important;\n}\n.mdui-theme-accent-yellow .mdui-text-color-theme-accent {\n color: #FFFF00 !important;\n}\n.mdui-theme-accent-yellow .mdui-text-color-theme-a100 {\n color: #FFFF8D !important;\n}\n.mdui-theme-accent-yellow .mdui-text-color-theme-a200 {\n color: #FFFF00 !important;\n}\n.mdui-theme-accent-yellow .mdui-text-color-theme-a400 {\n color: #FFEA00 !important;\n}\n.mdui-theme-accent-yellow .mdui-text-color-theme-a700 {\n color: #FFD600 !important;\n}\n/**\n * .mdui-text-color-[color]\n * .mdui-text-color-[color]-[degree]\n */\n.mdui-text-color-amber {\n color: #FFC107 !important;\n}\n.mdui-text-color-amber-50 {\n color: #FFF8E1 !important;\n}\n.mdui-text-color-amber-100 {\n color: #FFECB3 !important;\n}\n.mdui-text-color-amber-200 {\n color: #FFE082 !important;\n}\n.mdui-text-color-amber-300 {\n color: #FFD54F !important;\n}\n.mdui-text-color-amber-400 {\n color: #FFCA28 !important;\n}\n.mdui-text-color-amber-500 {\n color: #FFC107 !important;\n}\n.mdui-text-color-amber-600 {\n color: #FFB300 !important;\n}\n.mdui-text-color-amber-700 {\n color: #FFA000 !important;\n}\n.mdui-text-color-amber-800 {\n color: #FF8F00 !important;\n}\n.mdui-text-color-amber-900 {\n color: #FF6F00 !important;\n}\n.mdui-text-color-blue {\n color: #2196F3 !important;\n}\n.mdui-text-color-blue-50 {\n color: #E3F2FD !important;\n}\n.mdui-text-color-blue-100 {\n color: #BBDEFB !important;\n}\n.mdui-text-color-blue-200 {\n color: #90CAF9 !important;\n}\n.mdui-text-color-blue-300 {\n color: #64B5F6 !important;\n}\n.mdui-text-color-blue-400 {\n color: #42A5F5 !important;\n}\n.mdui-text-color-blue-500 {\n color: #2196F3 !important;\n}\n.mdui-text-color-blue-600 {\n color: #1E88E5 !important;\n}\n.mdui-text-color-blue-700 {\n color: #1976D2 !important;\n}\n.mdui-text-color-blue-800 {\n color: #1565C0 !important;\n}\n.mdui-text-color-blue-900 {\n color: #0D47A1 !important;\n}\n.mdui-text-color-blue-grey {\n color: #607D8B !important;\n}\n.mdui-text-color-blue-grey-50 {\n color: #ECEFF1 !important;\n}\n.mdui-text-color-blue-grey-100 {\n color: #CFD8DC !important;\n}\n.mdui-text-color-blue-grey-200 {\n color: #B0BEC5 !important;\n}\n.mdui-text-color-blue-grey-300 {\n color: #90A4AE !important;\n}\n.mdui-text-color-blue-grey-400 {\n color: #78909C !important;\n}\n.mdui-text-color-blue-grey-500 {\n color: #607D8B !important;\n}\n.mdui-text-color-blue-grey-600 {\n color: #546E7A !important;\n}\n.mdui-text-color-blue-grey-700 {\n color: #455A64 !important;\n}\n.mdui-text-color-blue-grey-800 {\n color: #37474F !important;\n}\n.mdui-text-color-blue-grey-900 {\n color: #263238 !important;\n}\n.mdui-text-color-brown {\n color: #795548 !important;\n}\n.mdui-text-color-brown-50 {\n color: #EFEBE9 !important;\n}\n.mdui-text-color-brown-100 {\n color: #D7CCC8 !important;\n}\n.mdui-text-color-brown-200 {\n color: #BCAAA4 !important;\n}\n.mdui-text-color-brown-300 {\n color: #A1887F !important;\n}\n.mdui-text-color-brown-400 {\n color: #8D6E63 !important;\n}\n.mdui-text-color-brown-500 {\n color: #795548 !important;\n}\n.mdui-text-color-brown-600 {\n color: #6D4C41 !important;\n}\n.mdui-text-color-brown-700 {\n color: #5D4037 !important;\n}\n.mdui-text-color-brown-800 {\n color: #4E342E !important;\n}\n.mdui-text-color-brown-900 {\n color: #3E2723 !important;\n}\n.mdui-text-color-cyan {\n color: #00BCD4 !important;\n}\n.mdui-text-color-cyan-50 {\n color: #E0F7FA !important;\n}\n.mdui-text-color-cyan-100 {\n color: #B2EBF2 !important;\n}\n.mdui-text-color-cyan-200 {\n color: #80DEEA !important;\n}\n.mdui-text-color-cyan-300 {\n color: #4DD0E1 !important;\n}\n.mdui-text-color-cyan-400 {\n color: #26C6DA !important;\n}\n.mdui-text-color-cyan-500 {\n color: #00BCD4 !important;\n}\n.mdui-text-color-cyan-600 {\n color: #00ACC1 !important;\n}\n.mdui-text-color-cyan-700 {\n color: #0097A7 !important;\n}\n.mdui-text-color-cyan-800 {\n color: #00838F !important;\n}\n.mdui-text-color-cyan-900 {\n color: #006064 !important;\n}\n.mdui-text-color-deep-orange {\n color: #FF5722 !important;\n}\n.mdui-text-color-deep-orange-50 {\n color: #FBE9E7 !important;\n}\n.mdui-text-color-deep-orange-100 {\n color: #FFCCBC !important;\n}\n.mdui-text-color-deep-orange-200 {\n color: #FFAB91 !important;\n}\n.mdui-text-color-deep-orange-300 {\n color: #FF8A65 !important;\n}\n.mdui-text-color-deep-orange-400 {\n color: #FF7043 !important;\n}\n.mdui-text-color-deep-orange-500 {\n color: #FF5722 !important;\n}\n.mdui-text-color-deep-orange-600 {\n color: #F4511E !important;\n}\n.mdui-text-color-deep-orange-700 {\n color: #E64A19 !important;\n}\n.mdui-text-color-deep-orange-800 {\n color: #D84315 !important;\n}\n.mdui-text-color-deep-orange-900 {\n color: #BF360C !important;\n}\n.mdui-text-color-deep-purple {\n color: #673AB7 !important;\n}\n.mdui-text-color-deep-purple-50 {\n color: #EDE7F6 !important;\n}\n.mdui-text-color-deep-purple-100 {\n color: #D1C4E9 !important;\n}\n.mdui-text-color-deep-purple-200 {\n color: #B39DDB !important;\n}\n.mdui-text-color-deep-purple-300 {\n color: #9575CD !important;\n}\n.mdui-text-color-deep-purple-400 {\n color: #7E57C2 !important;\n}\n.mdui-text-color-deep-purple-500 {\n color: #673AB7 !important;\n}\n.mdui-text-color-deep-purple-600 {\n color: #5E35B1 !important;\n}\n.mdui-text-color-deep-purple-700 {\n color: #512DA8 !important;\n}\n.mdui-text-color-deep-purple-800 {\n color: #4527A0 !important;\n}\n.mdui-text-color-deep-purple-900 {\n color: #311B92 !important;\n}\n.mdui-text-color-green {\n color: #4CAF50 !important;\n}\n.mdui-text-color-green-50 {\n color: #E8F5E9 !important;\n}\n.mdui-text-color-green-100 {\n color: #C8E6C9 !important;\n}\n.mdui-text-color-green-200 {\n color: #A5D6A7 !important;\n}\n.mdui-text-color-green-300 {\n color: #81C784 !important;\n}\n.mdui-text-color-green-400 {\n color: #66BB6A !important;\n}\n.mdui-text-color-green-500 {\n color: #4CAF50 !important;\n}\n.mdui-text-color-green-600 {\n color: #43A047 !important;\n}\n.mdui-text-color-green-700 {\n color: #388E3C !important;\n}\n.mdui-text-color-green-800 {\n color: #2E7D32 !important;\n}\n.mdui-text-color-green-900 {\n color: #1B5E20 !important;\n}\n.mdui-text-color-grey {\n color: #9E9E9E !important;\n}\n.mdui-text-color-grey-50 {\n color: #FAFAFA !important;\n}\n.mdui-text-color-grey-100 {\n color: #F5F5F5 !important;\n}\n.mdui-text-color-grey-200 {\n color: #EEEEEE !important;\n}\n.mdui-text-color-grey-300 {\n color: #E0E0E0 !important;\n}\n.mdui-text-color-grey-400 {\n color: #BDBDBD !important;\n}\n.mdui-text-color-grey-500 {\n color: #9E9E9E !important;\n}\n.mdui-text-color-grey-600 {\n color: #757575 !important;\n}\n.mdui-text-color-grey-700 {\n color: #616161 !important;\n}\n.mdui-text-color-grey-800 {\n color: #424242 !important;\n}\n.mdui-text-color-grey-900 {\n color: #212121 !important;\n}\n.mdui-text-color-indigo {\n color: #3F51B5 !important;\n}\n.mdui-text-color-indigo-50 {\n color: #E8EAF6 !important;\n}\n.mdui-text-color-indigo-100 {\n color: #C5CAE9 !important;\n}\n.mdui-text-color-indigo-200 {\n color: #9FA8DA !important;\n}\n.mdui-text-color-indigo-300 {\n color: #7986CB !important;\n}\n.mdui-text-color-indigo-400 {\n color: #5C6BC0 !important;\n}\n.mdui-text-color-indigo-500 {\n color: #3F51B5 !important;\n}\n.mdui-text-color-indigo-600 {\n color: #3949AB !important;\n}\n.mdui-text-color-indigo-700 {\n color: #303F9F !important;\n}\n.mdui-text-color-indigo-800 {\n color: #283593 !important;\n}\n.mdui-text-color-indigo-900 {\n color: #1A237E !important;\n}\n.mdui-text-color-light-blue {\n color: #03A9F4 !important;\n}\n.mdui-text-color-light-blue-50 {\n color: #E1F5FE !important;\n}\n.mdui-text-color-light-blue-100 {\n color: #B3E5FC !important;\n}\n.mdui-text-color-light-blue-200 {\n color: #81D4FA !important;\n}\n.mdui-text-color-light-blue-300 {\n color: #4FC3F7 !important;\n}\n.mdui-text-color-light-blue-400 {\n color: #29B6F6 !important;\n}\n.mdui-text-color-light-blue-500 {\n color: #03A9F4 !important;\n}\n.mdui-text-color-light-blue-600 {\n color: #039BE5 !important;\n}\n.mdui-text-color-light-blue-700 {\n color: #0288D1 !important;\n}\n.mdui-text-color-light-blue-800 {\n color: #0277BD !important;\n}\n.mdui-text-color-light-blue-900 {\n color: #01579B !important;\n}\n.mdui-text-color-light-green {\n color: #8BC34A !important;\n}\n.mdui-text-color-light-green-50 {\n color: #F1F8E9 !important;\n}\n.mdui-text-color-light-green-100 {\n color: #DCEDC8 !important;\n}\n.mdui-text-color-light-green-200 {\n color: #C5E1A5 !important;\n}\n.mdui-text-color-light-green-300 {\n color: #AED581 !important;\n}\n.mdui-text-color-light-green-400 {\n color: #9CCC65 !important;\n}\n.mdui-text-color-light-green-500 {\n color: #8BC34A !important;\n}\n.mdui-text-color-light-green-600 {\n color: #7CB342 !important;\n}\n.mdui-text-color-light-green-700 {\n color: #689F38 !important;\n}\n.mdui-text-color-light-green-800 {\n color: #558B2F !important;\n}\n.mdui-text-color-light-green-900 {\n color: #33691E !important;\n}\n.mdui-text-color-lime {\n color: #CDDC39 !important;\n}\n.mdui-text-color-lime-50 {\n color: #F9FBE7 !important;\n}\n.mdui-text-color-lime-100 {\n color: #F0F4C3 !important;\n}\n.mdui-text-color-lime-200 {\n color: #E6EE9C !important;\n}\n.mdui-text-color-lime-300 {\n color: #DCE775 !important;\n}\n.mdui-text-color-lime-400 {\n color: #D4E157 !important;\n}\n.mdui-text-color-lime-500 {\n color: #CDDC39 !important;\n}\n.mdui-text-color-lime-600 {\n color: #C0CA33 !important;\n}\n.mdui-text-color-lime-700 {\n color: #AFB42B !important;\n}\n.mdui-text-color-lime-800 {\n color: #9E9D24 !important;\n}\n.mdui-text-color-lime-900 {\n color: #827717 !important;\n}\n.mdui-text-color-orange {\n color: #FF9800 !important;\n}\n.mdui-text-color-orange-50 {\n color: #FFF3E0 !important;\n}\n.mdui-text-color-orange-100 {\n color: #FFE0B2 !important;\n}\n.mdui-text-color-orange-200 {\n color: #FFCC80 !important;\n}\n.mdui-text-color-orange-300 {\n color: #FFB74D !important;\n}\n.mdui-text-color-orange-400 {\n color: #FFA726 !important;\n}\n.mdui-text-color-orange-500 {\n color: #FF9800 !important;\n}\n.mdui-text-color-orange-600 {\n color: #FB8C00 !important;\n}\n.mdui-text-color-orange-700 {\n color: #F57C00 !important;\n}\n.mdui-text-color-orange-800 {\n color: #EF6C00 !important;\n}\n.mdui-text-color-orange-900 {\n color: #E65100 !important;\n}\n.mdui-text-color-pink {\n color: #E91E63 !important;\n}\n.mdui-text-color-pink-50 {\n color: #FCE4EC !important;\n}\n.mdui-text-color-pink-100 {\n color: #F8BBD0 !important;\n}\n.mdui-text-color-pink-200 {\n color: #F48FB1 !important;\n}\n.mdui-text-color-pink-300 {\n color: #F06292 !important;\n}\n.mdui-text-color-pink-400 {\n color: #EC407A !important;\n}\n.mdui-text-color-pink-500 {\n color: #E91E63 !important;\n}\n.mdui-text-color-pink-600 {\n color: #D81B60 !important;\n}\n.mdui-text-color-pink-700 {\n color: #C2185B !important;\n}\n.mdui-text-color-pink-800 {\n color: #AD1457 !important;\n}\n.mdui-text-color-pink-900 {\n color: #880E4F !important;\n}\n.mdui-text-color-purple {\n color: #9C27B0 !important;\n}\n.mdui-text-color-purple-50 {\n color: #F3E5F5 !important;\n}\n.mdui-text-color-purple-100 {\n color: #E1BEE7 !important;\n}\n.mdui-text-color-purple-200 {\n color: #CE93D8 !important;\n}\n.mdui-text-color-purple-300 {\n color: #BA68C8 !important;\n}\n.mdui-text-color-purple-400 {\n color: #AB47BC !important;\n}\n.mdui-text-color-purple-500 {\n color: #9C27B0 !important;\n}\n.mdui-text-color-purple-600 {\n color: #8E24AA !important;\n}\n.mdui-text-color-purple-700 {\n color: #7B1FA2 !important;\n}\n.mdui-text-color-purple-800 {\n color: #6A1B9A !important;\n}\n.mdui-text-color-purple-900 {\n color: #4A148C !important;\n}\n.mdui-text-color-red {\n color: #F44336 !important;\n}\n.mdui-text-color-red-50 {\n color: #FFEBEE !important;\n}\n.mdui-text-color-red-100 {\n color: #FFCDD2 !important;\n}\n.mdui-text-color-red-200 {\n color: #EF9A9A !important;\n}\n.mdui-text-color-red-300 {\n color: #E57373 !important;\n}\n.mdui-text-color-red-400 {\n color: #EF5350 !important;\n}\n.mdui-text-color-red-500 {\n color: #F44336 !important;\n}\n.mdui-text-color-red-600 {\n color: #E53935 !important;\n}\n.mdui-text-color-red-700 {\n color: #D32F2F !important;\n}\n.mdui-text-color-red-800 {\n color: #C62828 !important;\n}\n.mdui-text-color-red-900 {\n color: #B71C1C !important;\n}\n.mdui-text-color-teal {\n color: #009688 !important;\n}\n.mdui-text-color-teal-50 {\n color: #E0F2F1 !important;\n}\n.mdui-text-color-teal-100 {\n color: #B2DFDB !important;\n}\n.mdui-text-color-teal-200 {\n color: #80CBC4 !important;\n}\n.mdui-text-color-teal-300 {\n color: #4DB6AC !important;\n}\n.mdui-text-color-teal-400 {\n color: #26A69A !important;\n}\n.mdui-text-color-teal-500 {\n color: #009688 !important;\n}\n.mdui-text-color-teal-600 {\n color: #00897B !important;\n}\n.mdui-text-color-teal-700 {\n color: #00796B !important;\n}\n.mdui-text-color-teal-800 {\n color: #00695C !important;\n}\n.mdui-text-color-teal-900 {\n color: #004D40 !important;\n}\n.mdui-text-color-yellow {\n color: #FFEB3B !important;\n}\n.mdui-text-color-yellow-50 {\n color: #FFFDE7 !important;\n}\n.mdui-text-color-yellow-100 {\n color: #FFF9C4 !important;\n}\n.mdui-text-color-yellow-200 {\n color: #FFF59D !important;\n}\n.mdui-text-color-yellow-300 {\n color: #FFF176 !important;\n}\n.mdui-text-color-yellow-400 {\n color: #FFEE58 !important;\n}\n.mdui-text-color-yellow-500 {\n color: #FFEB3B !important;\n}\n.mdui-text-color-yellow-600 {\n color: #FDD835 !important;\n}\n.mdui-text-color-yellow-700 {\n color: #FBC02D !important;\n}\n.mdui-text-color-yellow-800 {\n color: #F9A825 !important;\n}\n.mdui-text-color-yellow-900 {\n color: #F57F17 !important;\n}\n/**\n * .mdui-text-color-[color]-accent\n * .mdui-text-color-[color]-[degree]\n */\n.mdui-text-color-amber-accent {\n color: #FFD740 !important;\n}\n.mdui-text-color-amber-a100 {\n color: #FFE57F !important;\n}\n.mdui-text-color-amber-a200 {\n color: #FFD740 !important;\n}\n.mdui-text-color-amber-a400 {\n color: #FFC400 !important;\n}\n.mdui-text-color-amber-a700 {\n color: #FFAB00 !important;\n}\n.mdui-text-color-blue-accent {\n color: #448AFF !important;\n}\n.mdui-text-color-blue-a100 {\n color: #82B1FF !important;\n}\n.mdui-text-color-blue-a200 {\n color: #448AFF !important;\n}\n.mdui-text-color-blue-a400 {\n color: #2979FF !important;\n}\n.mdui-text-color-blue-a700 {\n color: #2962FF !important;\n}\n.mdui-text-color-cyan-accent {\n color: #18FFFF !important;\n}\n.mdui-text-color-cyan-a100 {\n color: #84FFFF !important;\n}\n.mdui-text-color-cyan-a200 {\n color: #18FFFF !important;\n}\n.mdui-text-color-cyan-a400 {\n color: #00E5FF !important;\n}\n.mdui-text-color-cyan-a700 {\n color: #00B8D4 !important;\n}\n.mdui-text-color-deep-orange-accent {\n color: #FF6E40 !important;\n}\n.mdui-text-color-deep-orange-a100 {\n color: #FF9E80 !important;\n}\n.mdui-text-color-deep-orange-a200 {\n color: #FF6E40 !important;\n}\n.mdui-text-color-deep-orange-a400 {\n color: #FF3D00 !important;\n}\n.mdui-text-color-deep-orange-a700 {\n color: #DD2C00 !important;\n}\n.mdui-text-color-deep-purple-accent {\n color: #7C4DFF !important;\n}\n.mdui-text-color-deep-purple-a100 {\n color: #B388FF !important;\n}\n.mdui-text-color-deep-purple-a200 {\n color: #7C4DFF !important;\n}\n.mdui-text-color-deep-purple-a400 {\n color: #651FFF !important;\n}\n.mdui-text-color-deep-purple-a700 {\n color: #6200EA !important;\n}\n.mdui-text-color-green-accent {\n color: #69F0AE !important;\n}\n.mdui-text-color-green-a100 {\n color: #B9F6CA !important;\n}\n.mdui-text-color-green-a200 {\n color: #69F0AE !important;\n}\n.mdui-text-color-green-a400 {\n color: #00E676 !important;\n}\n.mdui-text-color-green-a700 {\n color: #00C853 !important;\n}\n.mdui-text-color-indigo-accent {\n color: #536DFE !important;\n}\n.mdui-text-color-indigo-a100 {\n color: #8C9EFF !important;\n}\n.mdui-text-color-indigo-a200 {\n color: #536DFE !important;\n}\n.mdui-text-color-indigo-a400 {\n color: #3D5AFE !important;\n}\n.mdui-text-color-indigo-a700 {\n color: #304FFE !important;\n}\n.mdui-text-color-light-blue-accent {\n color: #40C4FF !important;\n}\n.mdui-text-color-light-blue-a100 {\n color: #80D8FF !important;\n}\n.mdui-text-color-light-blue-a200 {\n color: #40C4FF !important;\n}\n.mdui-text-color-light-blue-a400 {\n color: #00B0FF !important;\n}\n.mdui-text-color-light-blue-a700 {\n color: #0091EA !important;\n}\n.mdui-text-color-light-green-accent {\n color: #B2FF59 !important;\n}\n.mdui-text-color-light-green-a100 {\n color: #CCFF90 !important;\n}\n.mdui-text-color-light-green-a200 {\n color: #B2FF59 !important;\n}\n.mdui-text-color-light-green-a400 {\n color: #76FF03 !important;\n}\n.mdui-text-color-light-green-a700 {\n color: #64DD17 !important;\n}\n.mdui-text-color-lime-accent {\n color: #EEFF41 !important;\n}\n.mdui-text-color-lime-a100 {\n color: #F4FF81 !important;\n}\n.mdui-text-color-lime-a200 {\n color: #EEFF41 !important;\n}\n.mdui-text-color-lime-a400 {\n color: #C6FF00 !important;\n}\n.mdui-text-color-lime-a700 {\n color: #AEEA00 !important;\n}\n.mdui-text-color-orange-accent {\n color: #FFAB40 !important;\n}\n.mdui-text-color-orange-a100 {\n color: #FFD180 !important;\n}\n.mdui-text-color-orange-a200 {\n color: #FFAB40 !important;\n}\n.mdui-text-color-orange-a400 {\n color: #FF9100 !important;\n}\n.mdui-text-color-orange-a700 {\n color: #FF6D00 !important;\n}\n.mdui-text-color-pink-accent {\n color: #FF4081 !important;\n}\n.mdui-text-color-pink-a100 {\n color: #FF80AB !important;\n}\n.mdui-text-color-pink-a200 {\n color: #FF4081 !important;\n}\n.mdui-text-color-pink-a400 {\n color: #F50057 !important;\n}\n.mdui-text-color-pink-a700 {\n color: #C51162 !important;\n}\n.mdui-text-color-purple-accent {\n color: #E040FB !important;\n}\n.mdui-text-color-purple-a100 {\n color: #EA80FC !important;\n}\n.mdui-text-color-purple-a200 {\n color: #E040FB !important;\n}\n.mdui-text-color-purple-a400 {\n color: #D500F9 !important;\n}\n.mdui-text-color-purple-a700 {\n color: #AA00FF !important;\n}\n.mdui-text-color-red-accent {\n color: #FF5252 !important;\n}\n.mdui-text-color-red-a100 {\n color: #FF8A80 !important;\n}\n.mdui-text-color-red-a200 {\n color: #FF5252 !important;\n}\n.mdui-text-color-red-a400 {\n color: #FF1744 !important;\n}\n.mdui-text-color-red-a700 {\n color: #D50000 !important;\n}\n.mdui-text-color-teal-accent {\n color: #64FFDA !important;\n}\n.mdui-text-color-teal-a100 {\n color: #A7FFEB !important;\n}\n.mdui-text-color-teal-a200 {\n color: #64FFDA !important;\n}\n.mdui-text-color-teal-a400 {\n color: #1DE9B6 !important;\n}\n.mdui-text-color-teal-a700 {\n color: #00BFA5 !important;\n}\n.mdui-text-color-yellow-accent {\n color: #FFFF00 !important;\n}\n.mdui-text-color-yellow-a100 {\n color: #FFFF8D !important;\n}\n.mdui-text-color-yellow-a200 {\n color: #FFFF00 !important;\n}\n.mdui-text-color-yellow-a400 {\n color: #FFEA00 !important;\n}\n.mdui-text-color-yellow-a700 {\n color: #FFD600 !important;\n}\n/**\n * .mdui-text-color-black\n * .mdui-text-color-black-[]\n * .mdui-text-color-theme-[]\n */\n.mdui-text-color-black {\n color: #000000 !important;\n}\n.mdui-text-color-black-text,\n.mdui-text-color-theme-text {\n color: rgba(0, 0, 0, 0.87) !important;\n}\n.mdui-text-color-black-secondary,\n.mdui-text-color-theme-secondary {\n color: rgba(0, 0, 0, 0.54) !important;\n}\n.mdui-text-color-black-disabled,\n.mdui-text-color-theme-disabled {\n color: rgba(0, 0, 0, 0.38) !important;\n}\n.mdui-text-color-black-divider,\n.mdui-text-color-theme-divider {\n color: rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-text-color-black-icon,\n.mdui-text-color-theme-icon {\n color: rgba(0, 0, 0, 0.54) !important;\n}\n.mdui-text-color-black-icon-disabled,\n.mdui-text-color-theme-icon-disabled {\n color: rgba(0, 0, 0, 0.26) !important;\n}\n/**\n * .mdui-text-color-white\n * .mdui-text-color-white-[]\n */\n.mdui-text-color-white {\n color: #FFFFFF !important;\n}\n.mdui-text-color-white-text {\n color: #ffffff !important;\n}\n.mdui-text-color-white-secondary {\n color: rgba(255, 255, 255, 0.7) !important;\n}\n.mdui-text-color-white-disabled {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.mdui-text-color-white-divider {\n color: rgba(255, 255, 255, 0.12) !important;\n}\n.mdui-text-color-white-icon {\n color: #ffffff !important;\n}\n.mdui-text-color-white-icon-disabled {\n color: rgba(255, 255, 255, 0.3) !important;\n}\n/**\n * .mdui-text-color-theme-[] 深色主题\n */\n.mdui-theme-layout-dark .mdui-text-color-theme-text {\n color: #ffffff !important;\n}\n.mdui-theme-layout-dark .mdui-text-color-theme-secondary {\n color: rgba(255, 255, 255, 0.7) !important;\n}\n.mdui-theme-layout-dark .mdui-text-color-theme-disabled {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.mdui-theme-layout-dark .mdui-text-color-theme-divider {\n color: rgba(255, 255, 255, 0.12) !important;\n}\n.mdui-theme-layout-dark .mdui-text-color-theme-icon {\n color: #ffffff !important;\n}\n.mdui-theme-layout-dark .mdui-text-color-theme-icon-disabled {\n color: rgba(255, 255, 255, 0.3) !important;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-text-color-theme-text {\n color: #ffffff !important;\n }\n .mdui-theme-layout-auto .mdui-text-color-theme-secondary {\n color: rgba(255, 255, 255, 0.7) !important;\n }\n .mdui-theme-layout-auto .mdui-text-color-theme-disabled {\n color: rgba(255, 255, 255, 0.5) !important;\n }\n .mdui-theme-layout-auto .mdui-text-color-theme-divider {\n color: rgba(255, 255, 255, 0.12) !important;\n }\n .mdui-theme-layout-auto .mdui-text-color-theme-icon {\n color: #ffffff !important;\n }\n .mdui-theme-layout-auto .mdui-text-color-theme-icon-disabled {\n color: rgba(255, 255, 255, 0.3) !important;\n }\n}\n/**\n * =============================================================================\n * ************ Helper 辅助类 ************\n * =============================================================================\n */\n/**\n * =================== 边距\n */\n.mdui-m-a-0 {\n margin: 0px !important;\n}\n.mdui-m-t-0 {\n margin-top: 0px !important;\n}\n.mdui-m-r-0 {\n margin-right: 0px !important;\n}\n.mdui-m-b-0 {\n margin-bottom: 0px !important;\n}\n.mdui-m-l-0 {\n margin-left: 0px !important;\n}\n.mdui-m-x-0 {\n margin-right: 0px !important;\n margin-left: 0px !important;\n}\n.mdui-m-y-0 {\n margin-top: 0px !important;\n margin-bottom: 0px !important;\n}\n.mdui-p-a-0 {\n padding: 0px !important;\n}\n.mdui-p-t-0 {\n padding-top: 0px !important;\n}\n.mdui-p-r-0 {\n padding-right: 0px !important;\n}\n.mdui-p-b-0 {\n padding-bottom: 0px !important;\n}\n.mdui-p-l-0 {\n padding-left: 0px !important;\n}\n.mdui-p-x-0 {\n padding-right: 0px !important;\n padding-left: 0px !important;\n}\n.mdui-p-y-0 {\n padding-top: 0px !important;\n padding-bottom: 0px !important;\n}\n.mdui-m-a-1 {\n margin: 8px !important;\n}\n.mdui-m-t-1 {\n margin-top: 8px !important;\n}\n.mdui-m-r-1 {\n margin-right: 8px !important;\n}\n.mdui-m-b-1 {\n margin-bottom: 8px !important;\n}\n.mdui-m-l-1 {\n margin-left: 8px !important;\n}\n.mdui-m-x-1 {\n margin-right: 8px !important;\n margin-left: 8px !important;\n}\n.mdui-m-y-1 {\n margin-top: 8px !important;\n margin-bottom: 8px !important;\n}\n.mdui-p-a-1 {\n padding: 8px !important;\n}\n.mdui-p-t-1 {\n padding-top: 8px !important;\n}\n.mdui-p-r-1 {\n padding-right: 8px !important;\n}\n.mdui-p-b-1 {\n padding-bottom: 8px !important;\n}\n.mdui-p-l-1 {\n padding-left: 8px !important;\n}\n.mdui-p-x-1 {\n padding-right: 8px !important;\n padding-left: 8px !important;\n}\n.mdui-p-y-1 {\n padding-top: 8px !important;\n padding-bottom: 8px !important;\n}\n.mdui-m-a-2 {\n margin: 16px !important;\n}\n.mdui-m-t-2 {\n margin-top: 16px !important;\n}\n.mdui-m-r-2 {\n margin-right: 16px !important;\n}\n.mdui-m-b-2 {\n margin-bottom: 16px !important;\n}\n.mdui-m-l-2 {\n margin-left: 16px !important;\n}\n.mdui-m-x-2 {\n margin-right: 16px !important;\n margin-left: 16px !important;\n}\n.mdui-m-y-2 {\n margin-top: 16px !important;\n margin-bottom: 16px !important;\n}\n.mdui-p-a-2 {\n padding: 16px !important;\n}\n.mdui-p-t-2 {\n padding-top: 16px !important;\n}\n.mdui-p-r-2 {\n padding-right: 16px !important;\n}\n.mdui-p-b-2 {\n padding-bottom: 16px !important;\n}\n.mdui-p-l-2 {\n padding-left: 16px !important;\n}\n.mdui-p-x-2 {\n padding-right: 16px !important;\n padding-left: 16px !important;\n}\n.mdui-p-y-2 {\n padding-top: 16px !important;\n padding-bottom: 16px !important;\n}\n.mdui-m-a-3 {\n margin: 24px !important;\n}\n.mdui-m-t-3 {\n margin-top: 24px !important;\n}\n.mdui-m-r-3 {\n margin-right: 24px !important;\n}\n.mdui-m-b-3 {\n margin-bottom: 24px !important;\n}\n.mdui-m-l-3 {\n margin-left: 24px !important;\n}\n.mdui-m-x-3 {\n margin-right: 24px !important;\n margin-left: 24px !important;\n}\n.mdui-m-y-3 {\n margin-top: 24px !important;\n margin-bottom: 24px !important;\n}\n.mdui-p-a-3 {\n padding: 24px !important;\n}\n.mdui-p-t-3 {\n padding-top: 24px !important;\n}\n.mdui-p-r-3 {\n padding-right: 24px !important;\n}\n.mdui-p-b-3 {\n padding-bottom: 24px !important;\n}\n.mdui-p-l-3 {\n padding-left: 24px !important;\n}\n.mdui-p-x-3 {\n padding-right: 24px !important;\n padding-left: 24px !important;\n}\n.mdui-p-y-3 {\n padding-top: 24px !important;\n padding-bottom: 24px !important;\n}\n.mdui-m-a-4 {\n margin: 32px !important;\n}\n.mdui-m-t-4 {\n margin-top: 32px !important;\n}\n.mdui-m-r-4 {\n margin-right: 32px !important;\n}\n.mdui-m-b-4 {\n margin-bottom: 32px !important;\n}\n.mdui-m-l-4 {\n margin-left: 32px !important;\n}\n.mdui-m-x-4 {\n margin-right: 32px !important;\n margin-left: 32px !important;\n}\n.mdui-m-y-4 {\n margin-top: 32px !important;\n margin-bottom: 32px !important;\n}\n.mdui-p-a-4 {\n padding: 32px !important;\n}\n.mdui-p-t-4 {\n padding-top: 32px !important;\n}\n.mdui-p-r-4 {\n padding-right: 32px !important;\n}\n.mdui-p-b-4 {\n padding-bottom: 32px !important;\n}\n.mdui-p-l-4 {\n padding-left: 32px !important;\n}\n.mdui-p-x-4 {\n padding-right: 32px !important;\n padding-left: 32px !important;\n}\n.mdui-p-y-4 {\n padding-top: 32px !important;\n padding-bottom: 32px !important;\n}\n.mdui-m-a-5 {\n margin: 40px !important;\n}\n.mdui-m-t-5 {\n margin-top: 40px !important;\n}\n.mdui-m-r-5 {\n margin-right: 40px !important;\n}\n.mdui-m-b-5 {\n margin-bottom: 40px !important;\n}\n.mdui-m-l-5 {\n margin-left: 40px !important;\n}\n.mdui-m-x-5 {\n margin-right: 40px !important;\n margin-left: 40px !important;\n}\n.mdui-m-y-5 {\n margin-top: 40px !important;\n margin-bottom: 40px !important;\n}\n.mdui-p-a-5 {\n padding: 40px !important;\n}\n.mdui-p-t-5 {\n padding-top: 40px !important;\n}\n.mdui-p-r-5 {\n padding-right: 40px !important;\n}\n.mdui-p-b-5 {\n padding-bottom: 40px !important;\n}\n.mdui-p-l-5 {\n padding-left: 40px !important;\n}\n.mdui-p-x-5 {\n padding-right: 40px !important;\n padding-left: 40px !important;\n}\n.mdui-p-y-5 {\n padding-top: 40px !important;\n padding-bottom: 40px !important;\n}\n/**\n * ======================== 快速浮动\n */\n/* 向左浮动 */\n.mdui-float-left {\n float: left !important;\n}\n/* 向右浮动 */\n.mdui-float-right {\n float: right !important;\n}\n/**\n * ========================= 水平居中\n */\n/* 水平居中 */\n.mdui-center {\n display: block !important;\n margin-right: auto !important;\n margin-left: auto !important;\n}\n/**\n * ========================= 垂直居中\n */\n/* 垂直居中 */\n.mdui-valign {\n display: flex !important;\n align-items: center !important;\n}\n/**\n * ========================= 文本对齐方式\n */\n/* 文本左对齐 */\n.mdui-text-left {\n text-align: left !important;\n}\n/* 文本居中对齐 */\n.mdui-text-center {\n text-align: center !important;\n}\n/* 文本向右对齐 */\n.mdui-text-right {\n text-align: right !important;\n}\n/**\n * ========================= 文本大小写转换\n */\n/* 文本转为小写 */\n.mdui-text-lowercase {\n text-transform: lowercase !important;\n}\n/* 文本转为大写 */\n.mdui-text-uppercase {\n text-transform: uppercase !important;\n}\n/* 文本转为单词的首字母大写 */\n.mdui-text-capitalize {\n text-transform: capitalize !important;\n}\n/**\n * ======================== 文本截断\n */\n/* 文本截断 */\n.mdui-text-truncate {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n/**\n * ========================= 清除浮动\n */\n/* 清除浮动 */\n.mdui-clearfix::before,\n.mdui-clearfix::after {\n display: table;\n content: ' ';\n}\n.mdui-clearfix::after {\n clear: both;\n}\n/**\n * ========================= 隐藏内容\n */\n/* 隐藏元素 */\n.mdui-hidden,\n[hidden] {\n display: none !important;\n}\n/* 使元素不可见 */\n.mdui-invisible {\n visibility: hidden;\n}\n/* Responsive utilities 响应式工具\n ========================================================================== */\n/* 在特定屏幕的特备上隐藏 */\n@media (max-width: 599px) {\n .mdui-hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 600px) and (max-width: 1023px) {\n .mdui-hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 1024px) and (max-width: 1439px) {\n .mdui-hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1440px) and (max-width: 1919px) {\n .mdui-hidden-lg {\n display: none !important;\n }\n}\n@media (min-width: 1920px) {\n .mdui-hidden-xl {\n display: none !important;\n }\n}\n/* 在比特定屏幕小的设备上隐藏 */\n@media (max-width: 599px) {\n .mdui-hidden-xs-down {\n display: none !important;\n }\n}\n@media (max-width: 1023px) {\n .mdui-hidden-sm-down {\n display: none !important;\n }\n}\n@media (max-width: 1439px) {\n .mdui-hidden-md-down {\n display: none !important;\n }\n}\n@media (max-width: 1919px) {\n .mdui-hidden-lg-down {\n display: none !important;\n }\n}\n.mdui-hidden-xl-down {\n display: none !important;\n}\n/* 在比特定屏幕大的设备上隐藏 */\n.mdui-hidden-xs-up {\n display: none !important;\n}\n@media (min-width: 600px) {\n .mdui-hidden-sm-up {\n display: none !important;\n }\n}\n@media (min-width: 1024px) {\n .mdui-hidden-md-up {\n display: none !important;\n }\n}\n@media (min-width: 1440px) {\n .mdui-hidden-lg-up {\n display: none !important;\n }\n}\n@media (min-width: 1920px) {\n .mdui-hidden-xl-up {\n display: none !important;\n }\n}\n/**\n * =============================================================================\n * ************ Icon 图标 ************\n * =============================================================================\n */\n.mdui-icon,\n.mdui-icon::before {\n color: inherit;\n font-weight: normal;\n font-size: 24px;\n /* Preferred icon size */\n font-style: normal;\n line-height: 1;\n direction: ltr;\n letter-spacing: normal;\n white-space: nowrap;\n text-transform: none;\n vertical-align: middle;\n word-wrap: normal;\n}\n.mdui-icon {\n display: inline-block;\n text-align: center;\n}\n.mdui-icon::before {\n display: block !important;\n width: 24px;\n height: 24px;\n}\n/**\n * =============================================================================\n * ************ Material Icons ************\n * =============================================================================\n *\n * https://github.com/google/material-design-icons/\n * v3.0.1\n */\n@font-face {\n font-weight: 400;\n font-family: 'Material Icons';\n font-style: normal;\n src: local('Material Icons'), local('MaterialIcons-Regular'), url(../icons/material-icons/MaterialIcons-Regular.woff2) format('woff2'), url(../icons/material-icons/MaterialIcons-Regular.woff) format('woff');\n}\n.material-icons {\n /* stylelint-disable-next-line */\n font-family: 'Material Icons';\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n /* Support for IE. */\n font-feature-settings: 'liga';\n}\n/**\n * =============================================================================\n * ************ Media 媒体工具 ************\n * =============================================================================\n */\n/* 响应式图片和视频 */\n.mdui-img-fluid,\n.mdui-video-fluid {\n display: block;\n max-width: 100%;\n height: auto;\n}\n/* 圆角图片 */\n.mdui-img-rounded {\n border-radius: 2px;\n}\n/* 圆形图片 */\n.mdui-img-circle {\n border-radius: 50%;\n}\n.mdui-video-container {\n position: relative;\n height: 0;\n padding-bottom: 56.25%;\n overflow: hidden;\n}\n.mdui-video-container iframe,\n.mdui-video-container object,\n.mdui-video-container embed {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n/**\n * =============================================================================\n * ************ Roboto 字体 ************\n * =============================================================================\n */\n@font-face {\n font-weight: 100;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Thin'), local('Roboto-Thin'), url('../fonts/roboto/Roboto-Thin.woff2') format('woff2'), url('../fonts/roboto/Roboto-Thin.woff') format('woff');\n}\n@font-face {\n font-weight: 100;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto ThinItalic'), local('Roboto-ThinItalic'), url('../fonts/roboto/Roboto-ThinItalic.woff2') format('woff2'), url('../fonts/roboto/Roboto-ThinItalic.woff') format('woff');\n}\n@font-face {\n font-weight: 300;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Light'), local('Roboto-Light'), url('../fonts/roboto/Roboto-Light.woff2') format('woff2'), url('../fonts/roboto/Roboto-Light.woff') format('woff');\n}\n@font-face {\n font-weight: 300;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto LightItalic'), local('Roboto-LightItalic'), url('../fonts/roboto/Roboto-LightItalic.woff2') format('woff2'), url('../fonts/roboto/Roboto-LightItalic.woff') format('woff');\n}\n@font-face {\n font-weight: 400;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Regular'), local('Roboto-Regular'), url('../fonts/roboto/Roboto-Regular.woff2') format('woff2'), url('../fonts/roboto/Roboto-Regular.woff') format('woff');\n}\n@font-face {\n font-weight: 400;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto RegularItalic'), local('Roboto-RegularItalic'), url('../fonts/roboto/Roboto-RegularItalic.woff2') format('woff2'), url('../fonts/roboto/Roboto-RegularItalic.woff') format('woff');\n}\n@font-face {\n font-weight: 500;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Medium'), local('Roboto-Medium'), url('../fonts/roboto/Roboto-Medium.woff2') format('woff2'), url('../fonts/roboto/Roboto-Medium.woff') format('woff');\n}\n@font-face {\n font-weight: 500;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto MediumItalic'), local('Roboto-MediumItalic'), url('../fonts/roboto/Roboto-MediumItalic.woff2') format('woff2'), url('../fonts/roboto/Roboto-MediumItalic.woff') format('woff');\n}\n@font-face {\n font-weight: 700;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Bold'), local('Roboto-Bold'), url('../fonts/roboto/Roboto-Bold.woff2') format('woff2'), url('../fonts/roboto/Roboto-Bold.woff') format('woff');\n}\n@font-face {\n font-weight: 700;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto BoldItalic'), local('Roboto-BoldItalic'), url('../fonts/roboto/Roboto-BoldItalic.woff2') format('woff2'), url('../fonts/roboto/Roboto-BoldItalic.woff') format('woff');\n}\n@font-face {\n font-weight: 900;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Black'), local('Roboto-Black'), url('../fonts/roboto/Roboto-Black.woff2') format('woff2'), url('../fonts/roboto/Roboto-Black.woff') format('woff');\n}\n@font-face {\n font-weight: 900;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto BlackItalic'), local('Roboto-BlackItalic'), url('../fonts/roboto/Roboto-BlackItalic.woff2') format('woff2'), url('../fonts/roboto/Roboto-BlackItalic.woff') format('woff');\n}\n/**\n * =============================================================================\n * ************ Typography 样式排版 ************\n * =============================================================================\n */\n/* .mdui-typo-display-4 */\n.mdui-typo-display-4,\n.mdui-typo-display-4-opacity {\n font-weight: 300;\n font-size: 112px;\n letter-spacing: -0.04em;\n}\n.mdui-typo-display-4-opacity {\n opacity: 0.54;\n}\n/* .mdui-typo-display-3 */\n.mdui-typo-display-3,\n.mdui-typo-display-3-opacity {\n font-weight: 400;\n font-size: 56px;\n letter-spacing: -0.02em;\n}\n.mdui-typo-display-3-opacity {\n opacity: 0.54;\n}\n/* .mdui-typo-display-2 */\n.mdui-typo-display-2,\n.mdui-typo-display-2-opacity {\n font-weight: 400;\n font-size: 45px;\n letter-spacing: 0;\n}\n.mdui-typo-display-2-opacity {\n opacity: 0.54;\n}\n/* .mdui-typo-display-1 */\n.mdui-typo-display-1,\n.mdui-typo-display-1-opacity {\n font-weight: 400;\n font-size: 34px;\n letter-spacing: 0;\n}\n.mdui-typo-display-1-opacity {\n opacity: 0.54;\n}\n/* .mdui-typo-headline */\n.mdui-typo-headline,\n.mdui-typo-headline-opacity {\n font-weight: 400;\n font-size: 24px;\n -moz-osx-font-smoothing: grayscale;\n}\n.mdui-typo-headline-opacity {\n opacity: 0.87;\n}\n/* .mdui-typo-title */\n.mdui-typo-title,\n.mdui-typo-title-opacity {\n font-weight: 500;\n font-size: 20px;\n letter-spacing: 0.02em;\n}\n.mdui-typo-title-opacity {\n opacity: 0.87;\n}\n.mdui-typo-subheading,\n.mdui-typo-subheading-opacity {\n font-weight: 400;\n font-size: 16px;\n letter-spacing: 0.04em;\n}\n.mdui-typo-subheading-opacity {\n opacity: 0.87;\n}\n.mdui-typo-body-2,\n.mdui-typo-body-2-opacity {\n font-weight: 500;\n font-size: 14px;\n letter-spacing: 0.04em;\n}\n.mdui-typo-body-2-opacity {\n opacity: 0.87;\n}\n.mdui-typo-body-1,\n.mdui-typo-body-1-opacity {\n font-weight: 400;\n font-size: 14px;\n letter-spacing: 0.04em;\n}\n.mdui-typo-body-1-opacity {\n opacity: 0.87;\n}\n.mdui-typo-caption,\n.mdui-typo-caption-opacity {\n font-weight: 400;\n font-size: 12px;\n letter-spacing: 0.08em;\n}\n.mdui-typo-caption-opacity {\n opacity: 0.54;\n}\n/**\n * =============================================================================\n * ************ Typography 文章排版 ************\n * =============================================================================\n */\n.mdui-typo {\n line-height: 1.8;\n word-wrap: break-word;\n /* a */\n /* small */\n /* blockquote */\n /* mark */\n /* h1 - h6 */\n /* code */\n /* pre code */\n /* abbr */\n /* ins */\n /* u */\n /* del */\n /* hr */\n /* pre */\n /* kbd */\n /* ul / ol */\n /* img */\n}\n.mdui-typo address,\n.mdui-typo caption,\n.mdui-typo cite,\n.mdui-typo code,\n.mdui-typo dfn,\n.mdui-typo th {\n font-weight: 400;\n font-style: normal;\n}\n.mdui-typo caption,\n.mdui-typo th {\n text-align: left;\n}\n.mdui-typo q::before,\n.mdui-typo q::after {\n content: '';\n}\n.mdui-typo pre,\n.mdui-typo code,\n.mdui-typo kbd,\n.mdui-typo samp,\n.mdui-typo pre tt {\n font-family: Consolas, Courier, 'Courier New', monospace;\n}\n.mdui-typo figcaption {\n color: rgba(0, 0, 0, 0.54);\n font-size: 80%;\n}\n.mdui-typo [draggable],\n.mdui-typo [draggable=\"true\"] {\n cursor: move;\n}\n.mdui-typo [draggable=\"false\"] {\n cursor: inherit;\n}\n.mdui-typo p,\n.mdui-typo pre,\n.mdui-typo ul,\n.mdui-typo ol,\n.mdui-typo dl,\n.mdui-typo form,\n.mdui-typo hr,\n.mdui-typo figure,\n.mdui-typo table,\n.mdui-typo .mdui-table,\n.mdui-typo .mdui-table-fluid {\n margin: 0 0 1.2em 0;\n}\n.mdui-typo p:last-child,\n.mdui-typo pre:last-child,\n.mdui-typo ul:last-child,\n.mdui-typo ol:last-child,\n.mdui-typo dl:last-child,\n.mdui-typo form:last-child,\n.mdui-typo hr:last-child,\n.mdui-typo figure:last-child,\n.mdui-typo table:last-child,\n.mdui-typo .mdui-table:last-child,\n.mdui-typo .mdui-table-fluid:last-child {\n margin-bottom: 0;\n}\n.mdui-typo a {\n color: #FF4081;\n position: relative;\n display: inline-block;\n overflow: hidden;\n text-decoration: none;\n vertical-align: top;\n outline: none;\n}\n.mdui-typo a::before {\n position: absolute;\n top: auto;\n bottom: 1px;\n left: 0;\n width: 100%;\n height: 1px;\n background-color: #FF4081;\n transform: scaleX(0);\n backface-visibility: hidden;\n transition: all 0.2s;\n content: ' ';\n}\n.mdui-typo a:hover::before,\n.mdui-typo a:focus::before {\n transform: scaleX(1);\n}\n.mdui-typo small {\n font-size: 80%;\n}\n.mdui-typo blockquote {\n margin: 1em 3em 1em 2em;\n padding-left: 1em;\n font-weight: 400;\n border-left: 4px solid rgba(0, 0, 0, 0.12);\n}\n@media only screen and (max-width: 599px) {\n .mdui-typo blockquote {\n margin: 1em 0;\n }\n}\n.mdui-typo blockquote:last-child {\n margin-bottom: 0;\n}\n.mdui-typo blockquote footer {\n color: rgba(0, 0, 0, 0.54);\n font-size: 86%;\n}\n.mdui-typo mark {\n margin: 0 5px;\n padding: 2px;\n background: #fffdd1;\n border-bottom: 1px solid #ffedce;\n}\n.mdui-typo h1,\n.mdui-typo h2,\n.mdui-typo h3,\n.mdui-typo h4,\n.mdui-typo h5,\n.mdui-typo h6 {\n margin-top: 1.2em;\n margin-bottom: 0.6em;\n color: inherit;\n font-weight: 400;\n font-family: inherit;\n line-height: 1.35;\n}\n.mdui-typo h1:last-child,\n.mdui-typo h2:last-child,\n.mdui-typo h3:last-child,\n.mdui-typo h4:last-child,\n.mdui-typo h5:last-child,\n.mdui-typo h6:last-child {\n margin-bottom: 0;\n}\n.mdui-typo h1 small,\n.mdui-typo h2 small,\n.mdui-typo h3 small,\n.mdui-typo h4 small,\n.mdui-typo h5 small,\n.mdui-typo h6 small {\n color: rgba(0, 0, 0, 0.54);\n font-weight: 400;\n font-size: 65%;\n line-height: 1;\n}\n.mdui-typo h1 {\n font-size: 2em;\n}\n.mdui-typo h2 {\n font-size: 1.8em;\n}\n.mdui-typo h3 {\n font-size: 1.6em;\n}\n.mdui-typo h4 {\n font-size: 1.4em;\n}\n.mdui-typo h5 {\n font-size: 1.2em;\n}\n.mdui-typo h6 {\n font-size: 1.1em;\n}\n.mdui-typo code {\n padding: 2px 6px;\n color: #c7254e;\n background-color: #f7f7f9;\n border-radius: 2px;\n}\n.mdui-typo pre code {\n padding: 0;\n color: inherit;\n font-size: inherit;\n line-height: 1.7;\n background-color: transparent;\n border-radius: 0;\n}\n.mdui-typo abbr[title] {\n text-decoration: none;\n border-bottom: 1px dotted;\n cursor: help;\n}\n.mdui-typo ins {\n text-decoration: none;\n border-bottom: 1px solid ;\n}\n.mdui-typo u {\n text-decoration: none;\n border-bottom: 1px solid;\n}\n.mdui-typo del {\n text-decoration: line-through;\n}\n.mdui-typo hr {\n height: 10px;\n margin-bottom: 0.8em;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n}\n.mdui-typo pre {\n padding: 12px 16px;\n overflow-x: auto;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 2px;\n -webkit-overflow-scrolling: touch;\n}\n.mdui-typo kbd {\n padding: 2px 6px;\n color: #fff;\n font-size: 90%;\n background-color: #333;\n border-radius: 2px;\n}\n.mdui-typo ul {\n padding-left: 2em;\n list-style: disc;\n}\n.mdui-typo ol {\n padding-left: 2em;\n list-style: decimal;\n}\n.mdui-typo li ul,\n.mdui-typo li ol {\n margin: 0.8em 0;\n}\n.mdui-typo li ul {\n list-style: circle;\n}\n.mdui-typo img {\n max-width: 100%;\n}\n.mdui-typo figure {\n text-align: center;\n}\n.mdui-typo figure figcaption {\n margin-top: 8px;\n color: #999;\n font-size: 14px;\n}\n.mdui-typo figure figcaption:empty::before {\n z-index: -1;\n color: #bfbfbf;\n cursor: text;\n content: attr(placeholder);\n}\n/**\n * =============================================================================\n * ************ Typo 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-typo a {\n color: #FFD740;\n}\n.mdui-theme-accent-amber .mdui-typo a::before {\n background-color: #FFD740;\n}\n.mdui-theme-accent-blue .mdui-typo a {\n color: #448AFF;\n}\n.mdui-theme-accent-blue .mdui-typo a::before {\n background-color: #448AFF;\n}\n.mdui-theme-accent-cyan .mdui-typo a {\n color: #18FFFF;\n}\n.mdui-theme-accent-cyan .mdui-typo a::before {\n background-color: #18FFFF;\n}\n.mdui-theme-accent-deep-orange .mdui-typo a {\n color: #FF6E40;\n}\n.mdui-theme-accent-deep-orange .mdui-typo a::before {\n background-color: #FF6E40;\n}\n.mdui-theme-accent-deep-purple .mdui-typo a {\n color: #7C4DFF;\n}\n.mdui-theme-accent-deep-purple .mdui-typo a::before {\n background-color: #7C4DFF;\n}\n.mdui-theme-accent-green .mdui-typo a {\n color: #69F0AE;\n}\n.mdui-theme-accent-green .mdui-typo a::before {\n background-color: #69F0AE;\n}\n.mdui-theme-accent-indigo .mdui-typo a {\n color: #536DFE;\n}\n.mdui-theme-accent-indigo .mdui-typo a::before {\n background-color: #536DFE;\n}\n.mdui-theme-accent-light-blue .mdui-typo a {\n color: #40C4FF;\n}\n.mdui-theme-accent-light-blue .mdui-typo a::before {\n background-color: #40C4FF;\n}\n.mdui-theme-accent-light-green .mdui-typo a {\n color: #B2FF59;\n}\n.mdui-theme-accent-light-green .mdui-typo a::before {\n background-color: #B2FF59;\n}\n.mdui-theme-accent-lime .mdui-typo a {\n color: #EEFF41;\n}\n.mdui-theme-accent-lime .mdui-typo a::before {\n background-color: #EEFF41;\n}\n.mdui-theme-accent-orange .mdui-typo a {\n color: #FFAB40;\n}\n.mdui-theme-accent-orange .mdui-typo a::before {\n background-color: #FFAB40;\n}\n.mdui-theme-accent-pink .mdui-typo a {\n color: #FF4081;\n}\n.mdui-theme-accent-pink .mdui-typo a::before {\n background-color: #FF4081;\n}\n.mdui-theme-accent-purple .mdui-typo a {\n color: #E040FB;\n}\n.mdui-theme-accent-purple .mdui-typo a::before {\n background-color: #E040FB;\n}\n.mdui-theme-accent-red .mdui-typo a {\n color: #FF5252;\n}\n.mdui-theme-accent-red .mdui-typo a::before {\n background-color: #FF5252;\n}\n.mdui-theme-accent-teal .mdui-typo a {\n color: #64FFDA;\n}\n.mdui-theme-accent-teal .mdui-typo a::before {\n background-color: #64FFDA;\n}\n.mdui-theme-accent-yellow .mdui-typo a {\n color: #FFFF00;\n}\n.mdui-theme-accent-yellow .mdui-typo a::before {\n background-color: #FFFF00;\n}\n/**\n * =============================================================================\n * ************ Typo dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-typo blockquote {\n border-left-color: rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-typo blockquote footer {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-typo figcaption {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-typo mark {\n background: #aaa;\n border-bottom-color: #bbb;\n}\n.mdui-theme-layout-dark .mdui-typo h1 small,\n.mdui-theme-layout-dark .mdui-typo h2 small,\n.mdui-theme-layout-dark .mdui-typo h3 small,\n.mdui-theme-layout-dark .mdui-typo h4 small,\n.mdui-theme-layout-dark .mdui-typo h5 small,\n.mdui-theme-layout-dark .mdui-typo h6 small {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-typo code {\n color: #FFCDD2;\n background-color: #424242;\n}\n.mdui-theme-layout-dark .mdui-typo pre {\n background: #424242;\n border-color: rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-typo kbd {\n background: #424242;\n}\n.mdui-theme-layout-dark .mdui-typo hr {\n border-color: rgba(255, 255, 255, 0.12);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-typo blockquote {\n border-left-color: rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-typo blockquote footer {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-typo figcaption {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-typo mark {\n background: #aaa;\n border-bottom-color: #bbb;\n }\n .mdui-theme-layout-auto .mdui-typo h1 small,\n .mdui-theme-layout-auto .mdui-typo h2 small,\n .mdui-theme-layout-auto .mdui-typo h3 small,\n .mdui-theme-layout-auto .mdui-typo h4 small,\n .mdui-theme-layout-auto .mdui-typo h5 small,\n .mdui-theme-layout-auto .mdui-typo h6 small {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-typo code {\n color: #FFCDD2;\n background-color: #424242;\n }\n .mdui-theme-layout-auto .mdui-typo pre {\n background: #424242;\n border-color: rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-typo kbd {\n background: #424242;\n }\n .mdui-theme-layout-auto .mdui-typo hr {\n border-color: rgba(255, 255, 255, 0.12);\n }\n}\n/**\n * =============================================================================\n * ************ Grid 网格系统 ************\n * =============================================================================\n */\n.mdui-container,\n.mdui-container-fluid {\n box-sizing: border-box;\n margin-right: auto;\n margin-left: auto;\n padding-right: 8px;\n padding-left: 8px;\n}\n.mdui-container::after,\n.mdui-container-fluid::after {\n display: table;\n clear: both;\n content: '';\n}\n.mdui-container {\n width: 96%;\n max-width: 1280px;\n}\n@media (min-width: 600px) {\n .mdui-container {\n width: 94%;\n }\n}\n@media (min-width: 1024px) {\n .mdui-container {\n width: 92%;\n }\n}\n.mdui-row,\n[class*=\"mdui-row-\"] {\n margin-right: -8px;\n margin-left: -8px;\n}\n.mdui-row::after,\n[class*=\"mdui-row-\"]::after {\n display: table;\n clear: both;\n content: '';\n}\n[class*=\"mdui-col-xs-\"],\n[class*=\"mdui-col-sm-\"],\n[class*=\"mdui-col-md-\"],\n[class*=\"mdui-col-lg-\"],\n[class*=\"mdui-col-xl-\"],\n.mdui-col {\n position: relative;\n box-sizing: border-box;\n min-height: 1px;\n padding-right: 8px;\n padding-left: 8px;\n}\n/* 取消列间距 */\n.mdui-row-gapless .mdui-col,\n.mdui-row-gapless [class*=\"mdui-col-xs-\"],\n.mdui-row-gapless [class*=\"mdui-col-sm-\"],\n.mdui-row-gapless [class*=\"mdui-col-md-\"],\n.mdui-row-gapless [class*=\"mdui-col-lg-\"],\n.mdui-row-gapless [class*=\"mdui-col-xl-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.mdui-row-gapless .mdui-row,\n.mdui-row-gapless [class*=\"mdui-row-\"] {\n margin-right: 0;\n margin-left: 0;\n}\n.mdui-col-xs-1 {\n float: left;\n width: 8.333333%;\n}\n.mdui-col-offset-xs-1 {\n margin-left: 8.333333%;\n}\n.mdui-row-xs-1 .mdui-col {\n float: left;\n width: 100%;\n}\n.mdui-col-xs-2 {\n float: left;\n width: 16.666667%;\n}\n.mdui-col-offset-xs-2 {\n margin-left: 16.666667%;\n}\n.mdui-row-xs-2 .mdui-col {\n float: left;\n width: 50%;\n}\n.mdui-col-xs-3 {\n float: left;\n width: 25%;\n}\n.mdui-col-offset-xs-3 {\n margin-left: 25%;\n}\n.mdui-row-xs-3 .mdui-col {\n float: left;\n width: 33.333333%;\n}\n.mdui-col-xs-4 {\n float: left;\n width: 33.333333%;\n}\n.mdui-col-offset-xs-4 {\n margin-left: 33.333333%;\n}\n.mdui-row-xs-4 .mdui-col {\n float: left;\n width: 25%;\n}\n.mdui-col-xs-5 {\n float: left;\n width: 41.666667%;\n}\n.mdui-col-offset-xs-5 {\n margin-left: 41.666667%;\n}\n.mdui-row-xs-5 .mdui-col {\n float: left;\n width: 20%;\n}\n.mdui-col-xs-6 {\n float: left;\n width: 50%;\n}\n.mdui-col-offset-xs-6 {\n margin-left: 50%;\n}\n.mdui-row-xs-6 .mdui-col {\n float: left;\n width: 16.666667%;\n}\n.mdui-col-xs-7 {\n float: left;\n width: 58.333333%;\n}\n.mdui-col-offset-xs-7 {\n margin-left: 58.333333%;\n}\n.mdui-row-xs-7 .mdui-col {\n float: left;\n width: 14.285714%;\n}\n.mdui-col-xs-8 {\n float: left;\n width: 66.666667%;\n}\n.mdui-col-offset-xs-8 {\n margin-left: 66.666667%;\n}\n.mdui-row-xs-8 .mdui-col {\n float: left;\n width: 12.5%;\n}\n.mdui-col-xs-9 {\n float: left;\n width: 75%;\n}\n.mdui-col-offset-xs-9 {\n margin-left: 75%;\n}\n.mdui-row-xs-9 .mdui-col {\n float: left;\n width: 11.111111%;\n}\n.mdui-col-xs-10 {\n float: left;\n width: 83.333333%;\n}\n.mdui-col-offset-xs-10 {\n margin-left: 83.333333%;\n}\n.mdui-row-xs-10 .mdui-col {\n float: left;\n width: 10%;\n}\n.mdui-col-xs-11 {\n float: left;\n width: 91.666667%;\n}\n.mdui-col-offset-xs-11 {\n margin-left: 91.666667%;\n}\n.mdui-row-xs-11 .mdui-col {\n float: left;\n width: 9.090909%;\n}\n.mdui-col-xs-12 {\n float: left;\n width: 100%;\n}\n.mdui-col-offset-xs-12 {\n margin-left: 100%;\n}\n.mdui-row-xs-12 .mdui-col {\n float: left;\n width: 8.333333%;\n}\n@media (min-width: 600px) {\n .mdui-col-sm-1 {\n float: left;\n width: 8.333333%;\n }\n .mdui-col-offset-sm-1 {\n margin-left: 8.333333%;\n }\n .mdui-row-sm-1 .mdui-col {\n float: left;\n width: 100%;\n }\n .mdui-col-sm-2 {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-offset-sm-2 {\n margin-left: 16.666667%;\n }\n .mdui-row-sm-2 .mdui-col {\n float: left;\n width: 50%;\n }\n .mdui-col-sm-3 {\n float: left;\n width: 25%;\n }\n .mdui-col-offset-sm-3 {\n margin-left: 25%;\n }\n .mdui-row-sm-3 .mdui-col {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-sm-4 {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-offset-sm-4 {\n margin-left: 33.333333%;\n }\n .mdui-row-sm-4 .mdui-col {\n float: left;\n width: 25%;\n }\n .mdui-col-sm-5 {\n float: left;\n width: 41.666667%;\n }\n .mdui-col-offset-sm-5 {\n margin-left: 41.666667%;\n }\n .mdui-row-sm-5 .mdui-col {\n float: left;\n width: 20%;\n }\n .mdui-col-sm-6 {\n float: left;\n width: 50%;\n }\n .mdui-col-offset-sm-6 {\n margin-left: 50%;\n }\n .mdui-row-sm-6 .mdui-col {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-sm-7 {\n float: left;\n width: 58.333333%;\n }\n .mdui-col-offset-sm-7 {\n margin-left: 58.333333%;\n }\n .mdui-row-sm-7 .mdui-col {\n float: left;\n width: 14.285714%;\n }\n .mdui-col-sm-8 {\n float: left;\n width: 66.666667%;\n }\n .mdui-col-offset-sm-8 {\n margin-left: 66.666667%;\n }\n .mdui-row-sm-8 .mdui-col {\n float: left;\n width: 12.5%;\n }\n .mdui-col-sm-9 {\n float: left;\n width: 75%;\n }\n .mdui-col-offset-sm-9 {\n margin-left: 75%;\n }\n .mdui-row-sm-9 .mdui-col {\n float: left;\n width: 11.111111%;\n }\n .mdui-col-sm-10 {\n float: left;\n width: 83.333333%;\n }\n .mdui-col-offset-sm-10 {\n margin-left: 83.333333%;\n }\n .mdui-row-sm-10 .mdui-col {\n float: left;\n width: 10%;\n }\n .mdui-col-sm-11 {\n float: left;\n width: 91.666667%;\n }\n .mdui-col-offset-sm-11 {\n margin-left: 91.666667%;\n }\n .mdui-row-sm-11 .mdui-col {\n float: left;\n width: 9.090909%;\n }\n .mdui-col-sm-12 {\n float: left;\n width: 100%;\n }\n .mdui-col-offset-sm-12 {\n margin-left: 100%;\n }\n .mdui-row-sm-12 .mdui-col {\n float: left;\n width: 8.333333%;\n }\n}\n@media (min-width: 1024px) {\n .mdui-col-md-1 {\n float: left;\n width: 8.333333%;\n }\n .mdui-col-offset-md-1 {\n margin-left: 8.333333%;\n }\n .mdui-row-md-1 .mdui-col {\n float: left;\n width: 100%;\n }\n .mdui-col-md-2 {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-offset-md-2 {\n margin-left: 16.666667%;\n }\n .mdui-row-md-2 .mdui-col {\n float: left;\n width: 50%;\n }\n .mdui-col-md-3 {\n float: left;\n width: 25%;\n }\n .mdui-col-offset-md-3 {\n margin-left: 25%;\n }\n .mdui-row-md-3 .mdui-col {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-md-4 {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-offset-md-4 {\n margin-left: 33.333333%;\n }\n .mdui-row-md-4 .mdui-col {\n float: left;\n width: 25%;\n }\n .mdui-col-md-5 {\n float: left;\n width: 41.666667%;\n }\n .mdui-col-offset-md-5 {\n margin-left: 41.666667%;\n }\n .mdui-row-md-5 .mdui-col {\n float: left;\n width: 20%;\n }\n .mdui-col-md-6 {\n float: left;\n width: 50%;\n }\n .mdui-col-offset-md-6 {\n margin-left: 50%;\n }\n .mdui-row-md-6 .mdui-col {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-md-7 {\n float: left;\n width: 58.333333%;\n }\n .mdui-col-offset-md-7 {\n margin-left: 58.333333%;\n }\n .mdui-row-md-7 .mdui-col {\n float: left;\n width: 14.285714%;\n }\n .mdui-col-md-8 {\n float: left;\n width: 66.666667%;\n }\n .mdui-col-offset-md-8 {\n margin-left: 66.666667%;\n }\n .mdui-row-md-8 .mdui-col {\n float: left;\n width: 12.5%;\n }\n .mdui-col-md-9 {\n float: left;\n width: 75%;\n }\n .mdui-col-offset-md-9 {\n margin-left: 75%;\n }\n .mdui-row-md-9 .mdui-col {\n float: left;\n width: 11.111111%;\n }\n .mdui-col-md-10 {\n float: left;\n width: 83.333333%;\n }\n .mdui-col-offset-md-10 {\n margin-left: 83.333333%;\n }\n .mdui-row-md-10 .mdui-col {\n float: left;\n width: 10%;\n }\n .mdui-col-md-11 {\n float: left;\n width: 91.666667%;\n }\n .mdui-col-offset-md-11 {\n margin-left: 91.666667%;\n }\n .mdui-row-md-11 .mdui-col {\n float: left;\n width: 9.090909%;\n }\n .mdui-col-md-12 {\n float: left;\n width: 100%;\n }\n .mdui-col-offset-md-12 {\n margin-left: 100%;\n }\n .mdui-row-md-12 .mdui-col {\n float: left;\n width: 8.333333%;\n }\n}\n@media (min-width: 1440px) {\n .mdui-col-lg-1 {\n float: left;\n width: 8.333333%;\n }\n .mdui-col-offset-lg-1 {\n margin-left: 8.333333%;\n }\n .mdui-row-lg-1 .mdui-col {\n float: left;\n width: 100%;\n }\n .mdui-col-lg-2 {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-offset-lg-2 {\n margin-left: 16.666667%;\n }\n .mdui-row-lg-2 .mdui-col {\n float: left;\n width: 50%;\n }\n .mdui-col-lg-3 {\n float: left;\n width: 25%;\n }\n .mdui-col-offset-lg-3 {\n margin-left: 25%;\n }\n .mdui-row-lg-3 .mdui-col {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-lg-4 {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-offset-lg-4 {\n margin-left: 33.333333%;\n }\n .mdui-row-lg-4 .mdui-col {\n float: left;\n width: 25%;\n }\n .mdui-col-lg-5 {\n float: left;\n width: 41.666667%;\n }\n .mdui-col-offset-lg-5 {\n margin-left: 41.666667%;\n }\n .mdui-row-lg-5 .mdui-col {\n float: left;\n width: 20%;\n }\n .mdui-col-lg-6 {\n float: left;\n width: 50%;\n }\n .mdui-col-offset-lg-6 {\n margin-left: 50%;\n }\n .mdui-row-lg-6 .mdui-col {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-lg-7 {\n float: left;\n width: 58.333333%;\n }\n .mdui-col-offset-lg-7 {\n margin-left: 58.333333%;\n }\n .mdui-row-lg-7 .mdui-col {\n float: left;\n width: 14.285714%;\n }\n .mdui-col-lg-8 {\n float: left;\n width: 66.666667%;\n }\n .mdui-col-offset-lg-8 {\n margin-left: 66.666667%;\n }\n .mdui-row-lg-8 .mdui-col {\n float: left;\n width: 12.5%;\n }\n .mdui-col-lg-9 {\n float: left;\n width: 75%;\n }\n .mdui-col-offset-lg-9 {\n margin-left: 75%;\n }\n .mdui-row-lg-9 .mdui-col {\n float: left;\n width: 11.111111%;\n }\n .mdui-col-lg-10 {\n float: left;\n width: 83.333333%;\n }\n .mdui-col-offset-lg-10 {\n margin-left: 83.333333%;\n }\n .mdui-row-lg-10 .mdui-col {\n float: left;\n width: 10%;\n }\n .mdui-col-lg-11 {\n float: left;\n width: 91.666667%;\n }\n .mdui-col-offset-lg-11 {\n margin-left: 91.666667%;\n }\n .mdui-row-lg-11 .mdui-col {\n float: left;\n width: 9.090909%;\n }\n .mdui-col-lg-12 {\n float: left;\n width: 100%;\n }\n .mdui-col-offset-lg-12 {\n margin-left: 100%;\n }\n .mdui-row-lg-12 .mdui-col {\n float: left;\n width: 8.333333%;\n }\n}\n@media (min-width: 1920px) {\n .mdui-col-xl-1 {\n float: left;\n width: 8.333333%;\n }\n .mdui-col-offset-xl-1 {\n margin-left: 8.333333%;\n }\n .mdui-row-xl-1 .mdui-col {\n float: left;\n width: 100%;\n }\n .mdui-col-xl-2 {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-offset-xl-2 {\n margin-left: 16.666667%;\n }\n .mdui-row-xl-2 .mdui-col {\n float: left;\n width: 50%;\n }\n .mdui-col-xl-3 {\n float: left;\n width: 25%;\n }\n .mdui-col-offset-xl-3 {\n margin-left: 25%;\n }\n .mdui-row-xl-3 .mdui-col {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-xl-4 {\n float: left;\n width: 33.333333%;\n }\n .mdui-col-offset-xl-4 {\n margin-left: 33.333333%;\n }\n .mdui-row-xl-4 .mdui-col {\n float: left;\n width: 25%;\n }\n .mdui-col-xl-5 {\n float: left;\n width: 41.666667%;\n }\n .mdui-col-offset-xl-5 {\n margin-left: 41.666667%;\n }\n .mdui-row-xl-5 .mdui-col {\n float: left;\n width: 20%;\n }\n .mdui-col-xl-6 {\n float: left;\n width: 50%;\n }\n .mdui-col-offset-xl-6 {\n margin-left: 50%;\n }\n .mdui-row-xl-6 .mdui-col {\n float: left;\n width: 16.666667%;\n }\n .mdui-col-xl-7 {\n float: left;\n width: 58.333333%;\n }\n .mdui-col-offset-xl-7 {\n margin-left: 58.333333%;\n }\n .mdui-row-xl-7 .mdui-col {\n float: left;\n width: 14.285714%;\n }\n .mdui-col-xl-8 {\n float: left;\n width: 66.666667%;\n }\n .mdui-col-offset-xl-8 {\n margin-left: 66.666667%;\n }\n .mdui-row-xl-8 .mdui-col {\n float: left;\n width: 12.5%;\n }\n .mdui-col-xl-9 {\n float: left;\n width: 75%;\n }\n .mdui-col-offset-xl-9 {\n margin-left: 75%;\n }\n .mdui-row-xl-9 .mdui-col {\n float: left;\n width: 11.111111%;\n }\n .mdui-col-xl-10 {\n float: left;\n width: 83.333333%;\n }\n .mdui-col-offset-xl-10 {\n margin-left: 83.333333%;\n }\n .mdui-row-xl-10 .mdui-col {\n float: left;\n width: 10%;\n }\n .mdui-col-xl-11 {\n float: left;\n width: 91.666667%;\n }\n .mdui-col-offset-xl-11 {\n margin-left: 91.666667%;\n }\n .mdui-row-xl-11 .mdui-col {\n float: left;\n width: 9.090909%;\n }\n .mdui-col-xl-12 {\n float: left;\n width: 100%;\n }\n .mdui-col-offset-xl-12 {\n margin-left: 100%;\n }\n .mdui-row-xl-12 .mdui-col {\n float: left;\n width: 8.333333%;\n }\n}\n/**\n * =============================================================================\n * ************ Shadow 阴影 ************\n * =============================================================================\n */\n.mdui-shadow-0 {\n box-shadow: none !important;\n}\n.mdui-shadow-1 {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-2 {\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-3 {\n box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-4 {\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-5 {\n box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 5px 8px 0 rgba(0, 0, 0, 0.14), 0 1px 14px 0 rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-6 {\n box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-7 {\n box-shadow: 0 4px 5px -2px rgba(0, 0, 0, 0.2), 0 7px 10px 1px rgba(0, 0, 0, 0.14), 0 2px 16px 1px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-8 {\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-9 {\n box-shadow: 0 5px 6px -3px rgba(0, 0, 0, 0.2), 0 9px 12px 1px rgba(0, 0, 0, 0.14), 0 3px 16px 2px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-10 {\n box-shadow: 0 6px 6px -3px rgba(0, 0, 0, 0.2), 0 10px 14px 1px rgba(0, 0, 0, 0.14), 0 4px 18px 3px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-11 {\n box-shadow: 0 6px 7px -4px rgba(0, 0, 0, 0.2), 0 11px 15px 1px rgba(0, 0, 0, 0.14), 0 4px 20px 3px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-12 {\n box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-13 {\n box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 13px 19px 2px rgba(0, 0, 0, 0.14), 0 5px 24px 4px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-14 {\n box-shadow: 0 7px 9px -4px rgba(0, 0, 0, 0.2), 0 14px 21px 2px rgba(0, 0, 0, 0.14), 0 5px 26px 4px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-15 {\n box-shadow: 0 8px 9px -5px rgba(0, 0, 0, 0.2), 0 15px 22px 2px rgba(0, 0, 0, 0.14), 0 6px 28px 5px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-16 {\n box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.2), 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-17 {\n box-shadow: 0 8px 11px -5px rgba(0, 0, 0, 0.2), 0 17px 26px 2px rgba(0, 0, 0, 0.14), 0 6px 32px 5px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-18 {\n box-shadow: 0 9px 11px -5px rgba(0, 0, 0, 0.2), 0 18px 28px 2px rgba(0, 0, 0, 0.14), 0 7px 34px 6px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-19 {\n box-shadow: 0 9px 12px -6px rgba(0, 0, 0, 0.2), 0 19px 29px 2px rgba(0, 0, 0, 0.14), 0 7px 36px 6px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-20 {\n box-shadow: 0 10px 13px -6px rgba(0, 0, 0, 0.2), 0 20px 31px 3px rgba(0, 0, 0, 0.14), 0 8px 38px 7px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-21 {\n box-shadow: 0 10px 13px -6px rgba(0, 0, 0, 0.2), 0 21px 33px 3px rgba(0, 0, 0, 0.14), 0 8px 40px 7px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-22 {\n box-shadow: 0 10px 14px -6px rgba(0, 0, 0, 0.2), 0 22px 35px 3px rgba(0, 0, 0, 0.14), 0 8px 42px 7px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-23 {\n box-shadow: 0 11px 14px -7px rgba(0, 0, 0, 0.2), 0 23px 36px 3px rgba(0, 0, 0, 0.14), 0 9px 44px 8px rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-shadow-24 {\n box-shadow: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12) !important;\n}\n/* 鼠标悬浮时加深阴影 */\n.mdui-hoverable {\n transition: box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: box-shadow;\n}\n.mdui-hoverable:hover,\n.mdui-hoverable:focus {\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n/**\n * =============================================================================\n * ************ Headroom ************\n * =============================================================================\n */\n.mdui-headroom {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n/* 固定在顶部时 */\n.mdui-headroom-pinned-top {\n transform: translate3d(0, 0, 0) !important;\n}\n/* 在顶部隐藏时 */\n.mdui-headroom-unpinned-top {\n transform: translate3d(0, -100%, 0) !important;\n box-shadow: none !important;\n}\n/* 固定在底部时 */\n.mdui-headroom-pinned-down {\n transform: translate3d(0, 0, 0) !important;\n}\n/* 在底部隐藏时 */\n.mdui-headroom-unpinned-down {\n transform: translate3d(0, 100%, 0) !important;\n box-shadow: none !important;\n}\n/* 固定应用栏中的工具栏 */\n.mdui-headroom-pinned-toolbar {\n transform: translate3d(0, 0, 0) !important;\n}\n/* 隐藏应用栏中的工具栏 */\n.mdui-headroom-unpinned-toolbar {\n transform: translate3d(0, -56px, 0) !important;\n}\n@media (min-width: 600px) {\n .mdui-headroom-unpinned-toolbar {\n transform: translate3d(0, -64px, 0) !important;\n }\n}\n@media (orientation: landscape) and (max-width: 959px) {\n .mdui-headroom-unpinned-toolbar {\n transform: translate3d(0, -48px, 0) !important;\n }\n}\n/**\n * =============================================================================\n * ************ Collapse 折叠插件 ************\n * =============================================================================\n */\n.mdui-collapse-item-header .mdui-collapse-item-arrow,\n.mdui-collapse-item-header.mdui-collapse-item-arrow {\n transform: rotate(0);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: transform;\n}\n.mdui-collapse-item-body {\n height: 0;\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 0;\n padding-bottom: 0;\n overflow: hidden;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: height;\n}\n.mdui-collapse-item-body .mdui-list-item {\n padding-left: 72px;\n}\n.mdui-collapse-item-open > .mdui-collapse-item-header .mdui-collapse-item-arrow,\n.mdui-collapse-item-open > .mdui-collapse-item-header.mdui-collapse-item-arrow {\n transform: rotate(180deg);\n}\n.mdui-collapse-item-open > .mdui-collapse-item-body {\n height: auto;\n}\n/**\n * =============================================================================\n * ************ Expansion panel 可扩展面板 ************\n * =============================================================================\n */\n/* 可扩展面板 */\n.mdui-panel {\n box-sizing: border-box;\n width: 100%;\n}\n/* 面板项 */\n.mdui-panel-item {\n color: rgba(0, 0, 0, 0.87);\n background-color: #fff;\n transition: margin 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: margin;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-panel-item:last-child {\n border-bottom: none;\n}\n/* 面板头部 */\n.mdui-panel-item-header {\n position: relative;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 48px;\n padding: 0 24px;\n font-size: 15px;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: height, background-color;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-panel-item-header:active {\n background-color: #EEEEEE;\n}\n/* 面板项标题 */\n.mdui-panel-item-title {\n box-sizing: border-box;\n width: 36%;\n min-width: 36%;\n padding-right: 16px;\n font-weight: 500;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n/* 面板项内容 */\n.mdui-panel-item-summary {\n flex-grow: 1;\n box-sizing: border-box;\n padding-right: 16px;\n color: rgba(0, 0, 0, 0.54);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n/* 展开收起的图标 */\n.mdui-panel-item-arrow {\n position: absolute;\n top: 12px;\n right: 24px;\n color: rgba(0, 0, 0, 0.54);\n transform: rotate(0);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n user-select: none;\n will-change: transform, top;\n}\n.mdui-panel-item-summary + .mdui-panel-item-arrow {\n position: relative;\n top: 0 !important;\n right: 0;\n}\n/* 面板项内容 */\n.mdui-panel-item-body {\n height: 0;\n padding: 0 24px;\n overflow: hidden;\n transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: height;\n}\n.mdui-panel-item-body::before,\n.mdui-panel-item-body::after {\n display: table;\n content: ' ';\n}\n.mdui-panel-item-body::after {\n clear: both;\n}\n.mdui-panel-item-body::before,\n.mdui-panel-item-body::after {\n display: table;\n content: ' ';\n}\n.mdui-panel-item-body::after {\n clear: both;\n}\n.mdui-panel-item-body::after {\n height: 16px;\n}\n/* 面板项操作栏 */\n.mdui-panel-item-actions {\n display: block;\n width: 100%;\n margin: 16px -24px 0 -24px;\n padding: 16px 24px 0 24px;\n text-align: right;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n}\n.mdui-panel-item-actions .mdui-btn {\n margin-left: 8px;\n}\n.mdui-panel-item-actions .mdui-btn:first-child {\n margin-left: 0;\n}\n/* 打开状态的面板项 */\n.mdui-panel-item-open {\n height: auto;\n margin-top: 16px;\n margin-bottom: 16px;\n}\n.mdui-panel-item-open > .mdui-panel-item-header {\n height: 64px;\n}\n.mdui-panel-item-open > .mdui-panel-item-header .mdui-panel-item-arrow {\n top: 20px;\n transform: rotate(180deg);\n}\n.mdui-panel-item-open > .mdui-panel-item-body {\n height: auto;\n}\n/* 使打开项上下没有边距 */\n.mdui-panel-gapless {\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-panel-gapless .mdui-panel-item {\n box-shadow: none;\n}\n.mdui-panel-gapless .mdui-panel-item-open {\n margin-top: 0;\n margin-bottom: 0;\n}\n/* 弹出面板 */\n.mdui-panel-popout .mdui-panel-item-open {\n margin-right: -16px;\n margin-left: -16px;\n}\n/**\n * =============================================================================\n * ************ Expansion panel dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark {\n /* stylelint-disable-next-line */\n}\n.mdui-theme-layout-dark .mdui-panel-item {\n color: #fff;\n background-color: #303030;\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-panel-item:last-child {\n border-bottom: none;\n}\n.mdui-theme-layout-dark .mdui-panel-item-header:active {\n background-color: #424242;\n}\n.mdui-theme-layout-dark .mdui-panel-item-summary {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-panel-item-arrow {\n color: #ffffff;\n}\n.mdui-theme-layout-dark .mdui-panel-item-actions {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto {\n /* stylelint-disable-next-line */\n }\n .mdui-theme-layout-auto .mdui-panel-item {\n color: #fff;\n background-color: #303030;\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-panel-item:last-child {\n border-bottom: none;\n }\n .mdui-theme-layout-auto .mdui-panel-item-header:active {\n background-color: #424242;\n }\n .mdui-theme-layout-auto .mdui-panel-item-summary {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-panel-item-arrow {\n color: #ffffff;\n }\n .mdui-theme-layout-auto .mdui-panel-item-actions {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n }\n}\n/**\n * =============================================================================\n * ************ Table 表格 ************\n * =============================================================================\n */\n.mdui-table {\n position: relative;\n width: 100%;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: none;\n border-collapse: separate;\n border-spacing: 0;\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-table tbody tr {\n position: relative;\n transition: background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-table th,\n.mdui-table td {\n position: relative;\n box-sizing: border-box;\n padding: 12px 28px;\n text-align: left;\n vertical-align: middle;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n}\n.mdui-table th {\n color: rgba(0, 0, 0, 0.54);\n font-weight: 700;\n font-size: 13px;\n line-height: 32px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-table td {\n color: rgba(0, 0, 0, 0.87);\n font-size: 14px;\n line-height: 24px;\n}\n/* 每一行前面的复选框 */\n.mdui-table-cell-checkbox {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n padding-left: 24px !important;\n}\n.mdui-table-cell-checkbox .mdui-checkbox {\n margin-top: 7px;\n}\n.mdui-table-cell-checkbox + td,\n.mdui-table-cell-checkbox + th {\n padding-left: 6px !important;\n}\nth.mdui-table-cell-checkbox .mdui-checkbox {\n margin-top: 11px;\n}\n.mdui-table th:last-child,\n.mdui-table td:last-child {\n padding-right: 24px;\n}\n.mdui-table th:first-child,\n.mdui-table td:first-child {\n padding-right: 0;\n padding-left: 24px;\n}\n.mdui-table th:nth-child(2),\n.mdui-table td:nth-child(2) {\n padding-left: 24px;\n}\n/* 鼠标悬浮时行背景加深 */\n.mdui-table-hoverable tbody tr:hover {\n background-color: #EEEEEE;\n}\n/* 表格放到该元素内,使表格产生滚动条时只在该元素内滚动 */\n.mdui-table-fluid {\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: none;\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-table-fluid .mdui-table {\n box-shadow: none;\n margin: 0;\n border: none;\n}\n/* 数字列,右对齐 */\n.mdui-table-col-numeric {\n text-align: right !important;\n}\n/* 行处于选中状态 */\n.mdui-table-row-selected {\n background-color: #F5F5F5;\n}\n/**\n * =============================================================================\n * ************ Table dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-table {\n background-color: #303030;\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-bottom: none;\n}\n.mdui-theme-layout-dark .mdui-table th,\n.mdui-theme-layout-dark .mdui-table td {\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-table th {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-table td {\n color: #ffffff;\n}\n.mdui-theme-layout-dark .mdui-table-hoverable tbody tr:hover {\n background-color: #616161;\n}\n.mdui-theme-layout-dark .mdui-table-fluid {\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-bottom: none;\n}\n.mdui-theme-layout-dark .mdui-table-fluid .mdui-table {\n box-shadow: none;\n border: none;\n}\n.mdui-theme-layout-dark .mdui-table-row-selected {\n background-color: #424242;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-table {\n background-color: #303030;\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-bottom: none;\n }\n .mdui-theme-layout-auto .mdui-table th,\n .mdui-theme-layout-auto .mdui-table td {\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-table th {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-table td {\n color: #ffffff;\n }\n .mdui-theme-layout-auto .mdui-table-hoverable tbody tr:hover {\n background-color: #616161;\n }\n .mdui-theme-layout-auto .mdui-table-fluid {\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-bottom: none;\n }\n .mdui-theme-layout-auto .mdui-table-fluid .mdui-table {\n box-shadow: none;\n border: none;\n }\n .mdui-theme-layout-auto .mdui-table-row-selected {\n background-color: #424242;\n }\n}\n/**\n * =============================================================================\n * ************ Divider 分割线 ************\n * =============================================================================\n */\n.mdui-divider,\n.mdui-divider-light,\n.mdui-divider-dark,\n.mdui-divider-inset,\n.mdui-divider-inset-light,\n.mdui-divider-inset-dark {\n height: 1px;\n margin: -1px 0 0 0;\n border: none;\n}\n.mdui-divider-inset,\n.mdui-divider-inset-light,\n.mdui-divider-inset-dark {\n margin-left: 72px;\n}\n.mdui-divider,\n.mdui-divider-inset {\n background-color: rgba(0, 0, 0, 0.12);\n}\n.mdui-divider-light,\n.mdui-divider-inset-light {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.mdui-divider-dark,\n.mdui-divider-inset-dark {\n background-color: rgba(0, 0, 0, 0.12);\n}\n/**\n * =============================================================================\n * ************ Divider dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-divider,\n.mdui-theme-layout-dark .mdui-divider-inset {\n background-color: rgba(255, 255, 255, 0.12);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-divider,\n .mdui-theme-layout-auto .mdui-divider-inset {\n background-color: rgba(255, 255, 255, 0.12);\n }\n}\n/**\n * =============================================================================\n * ************ 涟漪动画 ************\n * =============================================================================\n */\n.mdui-ripple {\n position: relative;\n overflow: hidden;\n cursor: pointer;\n user-select: none;\n}\n/* Ripple */\n.mdui-ripple-wave {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 1;\n margin: 0;\n padding: 0;\n font-size: 0;\n background-color: rgba(0, 0, 0, 0.1);\n border-radius: 50%;\n transform: translate3d(0, 0, 0) scale(0);\n transition-duration: 1400ms;\n pointer-events: none;\n}\n/* 有背景色的默认使用白色涟漪 */\n.mdui-ripple[class*=\"mdui-color-\"] .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3);\n}\n/* 白色涟漪 */\n.mdui-ripple-white .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3) !important;\n}\n/* 黑色涟漪 */\n.mdui-ripple-black .mdui-ripple-wave {\n background-color: rgba(0, 0, 0, 0.1) !important;\n}\n.mdui-ripple-wave-fill {\n opacity: 0.35;\n transition-duration: 300ms;\n}\n.mdui-ripple-wave-out {\n opacity: 0;\n transition-duration: 600ms;\n}\n/**\n * =============================================================================\n * ************ Ripple 颜色 ************\n * =============================================================================\n */\n.mdui-ripple-amber .mdui-ripple-wave {\n background-color: rgba(255, 193, 7, 0.3) !important;\n}\n.mdui-ripple-blue .mdui-ripple-wave {\n background-color: rgba(33, 150, 243, 0.3) !important;\n}\n.mdui-ripple-blue-grey .mdui-ripple-wave {\n background-color: rgba(96, 125, 139, 0.3) !important;\n}\n.mdui-ripple-brown .mdui-ripple-wave {\n background-color: rgba(121, 85, 72, 0.3) !important;\n}\n.mdui-ripple-cyan .mdui-ripple-wave {\n background-color: rgba(0, 188, 212, 0.3) !important;\n}\n.mdui-ripple-deep-orange .mdui-ripple-wave {\n background-color: rgba(255, 87, 34, 0.3) !important;\n}\n.mdui-ripple-deep-purple .mdui-ripple-wave {\n background-color: rgba(103, 58, 183, 0.3) !important;\n}\n.mdui-ripple-green .mdui-ripple-wave {\n background-color: rgba(76, 175, 80, 0.3) !important;\n}\n.mdui-ripple-grey .mdui-ripple-wave {\n background-color: rgba(158, 158, 158, 0.3) !important;\n}\n.mdui-ripple-indigo .mdui-ripple-wave {\n background-color: rgba(63, 81, 181, 0.3) !important;\n}\n.mdui-ripple-light-blue .mdui-ripple-wave {\n background-color: rgba(3, 169, 244, 0.3) !important;\n}\n.mdui-ripple-light-green .mdui-ripple-wave {\n background-color: rgba(139, 195, 74, 0.3) !important;\n}\n.mdui-ripple-lime .mdui-ripple-wave {\n background-color: rgba(205, 220, 57, 0.3) !important;\n}\n.mdui-ripple-orange .mdui-ripple-wave {\n background-color: rgba(255, 152, 0, 0.3) !important;\n}\n.mdui-ripple-pink .mdui-ripple-wave {\n background-color: rgba(233, 30, 99, 0.3) !important;\n}\n.mdui-ripple-purple .mdui-ripple-wave {\n background-color: rgba(156, 39, 176, 0.3) !important;\n}\n.mdui-ripple-red .mdui-ripple-wave {\n background-color: rgba(244, 67, 54, 0.3) !important;\n}\n.mdui-ripple-teal .mdui-ripple-wave {\n background-color: rgba(0, 150, 136, 0.3) !important;\n}\n.mdui-ripple-yellow .mdui-ripple-wave {\n background-color: rgba(255, 235, 59, 0.3) !important;\n}\n/**\n * =============================================================================\n * ************ Ripple dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3);\n }\n}\n/**\n * =============================================================================\n * ************ Text Field 文本框 ************\n * =============================================================================\n */\n/* 文本框外层 */\n.mdui-textfield {\n position: relative;\n padding-top: 16px;\n padding-bottom: 8px;\n overflow: hidden;\n}\n.mdui-textfield-has-bottom {\n padding-bottom: 28px;\n}\n/* 输入框 */\n.mdui-textfield-input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 36px;\n margin: 0;\n padding: 8px 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n font-size: 16px;\n font-family: inherit;\n line-height: 20px;\n background: none;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.42);\n border-radius: 0;\n outline: none;\n box-shadow: none;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 0.2s;\n transition-property: border-bottom-color, padding-right, box-shadow;\n appearance: none;\n resize: none;\n}\n.mdui-textfield-input::-webkit-input-placeholder {\n color: inherit;\n opacity: 0.42;\n}\n.mdui-textfield-input:not([disabled]):hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.87);\n box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.87);\n cursor: pointer;\n}\n.mdui-textfield-input[rows] {\n height: auto !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n/* 文本框 label */\n.mdui-textfield-label {\n display: block;\n width: 100%;\n color: rgba(0, 0, 0, 0.54);\n font-size: 16px;\n transform: scale(0.75) translateY(0);\n transform-origin: left;\n transition: all 0.2s;\n pointer-events: none;\n}\n/* 表单验证错误提示、帮助文本提示 */\n.mdui-textfield-error,\n.mdui-textfield-helper {\n position: absolute;\n bottom: 8px;\n height: 12px;\n font-size: 12px;\n line-height: 12px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-textfield-error {\n color: rgba(255, 23, 68, 0.87);\n visibility: hidden;\n}\n.mdui-textfield-helper {\n color: rgba(0, 0, 0, 0.54);\n}\n/* 表单中的图标\n ========== */\n.mdui-textfield .mdui-icon {\n position: absolute;\n bottom: 8px;\n padding: 6px;\n color: rgba(0, 0, 0, 0.54);\n}\n.mdui-textfield .mdui-icon ~ .mdui-textfield-label,\n.mdui-textfield .mdui-icon ~ .mdui-textfield-input,\n.mdui-textfield .mdui-icon ~ .mdui-textfield-error,\n.mdui-textfield .mdui-icon ~ .mdui-textfield-helper,\n.mdui-textfield .mdui-icon ~ .mdui-textfield-flex-wrap {\n /* stylelint-disable-next-line */\n width: calc(100% - 56px);\n margin-left: 56px;\n}\n.mdui-textfield-has-bottom .mdui-icon {\n bottom: 28px;\n}\n/* 聚焦状态的文本框\n ============= */\n.mdui-textfield-focus .mdui-textfield-input,\n.mdui-textfield-focus .mdui-textfield-input:hover {\n border-bottom-color: #C51162;\n box-shadow: 0 1px 0 0 #C51162;\n}\n.mdui-textfield-focus .mdui-textfield-label,\n.mdui-textfield-focus .mdui-icon {\n color: rgba(197, 17, 98, 0.87);\n}\n/* 含有浮动标签的文本框\n ================ */\n.mdui-textfield-floating-label .mdui-textfield-label {\n color: rgba(0, 0, 0, 0.35);\n transform: scale(1) translateY(27px);\n}\n.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label {\n color: rgba(0, 0, 0, 0.65);\n transform: scale(0.75) translateY(0);\n}\n.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label {\n color: #E91E63;\n}\n/* 可展开文本框,默认向右展开\n ========== */\n.mdui-textfield-expandable {\n width: 36px;\n min-height: 36px;\n padding: 1px 0;\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-textfield-expandable .mdui-icon {\n bottom: 0;\n padding: 0;\n}\n.mdui-textfield-expandable .mdui-textfield-input {\n /* stylelint-disable-next-line */\n width: calc(100% - 36px);\n margin-left: 36px;\n padding-right: 0;\n}\n.mdui-textfield-expandable .mdui-textfield-icon {\n position: absolute;\n top: 0;\n left: 0;\n}\n.mdui-textfield-expandable .mdui-textfield-close {\n position: absolute;\n top: 0;\n right: 0;\n transform: scale(0);\n}\n.mdui-textfield-expandable.mdui-textfield-expanded {\n width: 100%;\n}\n.mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-input {\n padding-right: 36px;\n}\n.mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-close {\n transform: scale(1);\n}\n/* 表单验证不通过\n =========== */\n.mdui-textfield-invalid .mdui-textfield-input,\n.mdui-textfield-invalid-html5 .mdui-textfield-input,\n.mdui-textfield-invalid.mdui-textfield-focus .mdui-textfield-input,\n.mdui-textfield-invalid-html5.mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF1744 !important;\n box-shadow: 0 1px 0 0 #FF1744 !important;\n}\n.mdui-textfield-invalid .mdui-textfield-label,\n.mdui-textfield-invalid-html5 .mdui-textfield-label {\n color: #FF1744 !important;\n}\n.mdui-textfield-invalid.mdui-textfield-floating-label .mdui-textfield-label,\n.mdui-textfield-invalid-html5.mdui-textfield-floating-label .mdui-textfield-label {\n color: rgba(255, 23, 68, 0.35) !important;\n}\n.mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label,\n.mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label {\n color: #FF1744 !important;\n}\n.mdui-textfield-invalid .mdui-textfield-error,\n.mdui-textfield-invalid-html5 .mdui-textfield-error {\n visibility: visible;\n}\n.mdui-textfield-invalid .mdui-textfield-error + .mdui-textfield-helper,\n.mdui-textfield-invalid-html5 .mdui-textfield-error + .mdui-textfield-helper {\n visibility: hidden;\n}\n/* 禁用表单\n ====== */\n.mdui-textfield-disabled .mdui-textfield-label,\n.mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder {\n color: rgba(0, 0, 0, 0.38);\n}\n.mdui-textfield-disabled .mdui-textfield-input {\n color: rgba(0, 0, 0, 0.42);\n cursor: default;\n}\n.mdui-textfield-disabled .mdui-textfield-input {\n border-bottom: 1px dashed rgba(0, 0, 0, 0.42);\n}\n/* 字数统计\n ====== */\n.mdui-textfield-counter {\n position: absolute;\n right: 8px;\n bottom: 8px;\n height: 12px;\n color: rgba(0, 0, 0, 0.54);\n font-size: 12px;\n line-height: 12px;\n}\n/**\n * =============================================================================\n * ************ Textfield dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-textfield-input {\n color: #fff;\n border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-textfield-input::-webkit-input-placeholder {\n color: rgba(255, 255, 255, 0.5);\n}\n.mdui-theme-layout-dark .mdui-textfield-input:not([disabled]):hover {\n border-bottom-color: #ffffff;\n box-shadow: 0 1px 0 0 #ffffff;\n}\n.mdui-theme-layout-dark .mdui-textfield .mdui-icon {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-textfield-label {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-textfield-floating-label .mdui-textfield-label {\n color: rgba(255, 255, 255, 0.35);\n}\n.mdui-theme-layout-dark .mdui-textfield-error {\n color: #FF1744;\n}\n.mdui-theme-layout-dark .mdui-textfield-helper {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-textfield-counter {\n color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input,\n.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input:hover {\n border-bottom-color: #FF4081;\n box-shadow: 0 1px 0 0 #FF4081;\n}\n.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label {\n color: #FF4081;\n}\n.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-label,\n.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder {\n color: rgba(255, 255, 255, 0.5);\n}\n.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input {\n color: rgba(255, 255, 255, 0.5);\n}\n.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input {\n border-bottom-color: rgba(255, 255, 255, 0.7);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-textfield-input {\n color: #fff;\n border-bottom-color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-textfield-input::-webkit-input-placeholder {\n color: rgba(255, 255, 255, 0.5);\n }\n .mdui-theme-layout-auto .mdui-textfield-input:not([disabled]):hover {\n border-bottom-color: #ffffff;\n box-shadow: 0 1px 0 0 #ffffff;\n }\n .mdui-theme-layout-auto .mdui-textfield .mdui-icon {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-textfield-label {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-textfield-floating-label .mdui-textfield-label {\n color: rgba(255, 255, 255, 0.35);\n }\n .mdui-theme-layout-auto .mdui-textfield-error {\n color: #FF1744;\n }\n .mdui-theme-layout-auto .mdui-textfield-helper {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-textfield-counter {\n color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input,\n .mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input:hover {\n border-bottom-color: #FF4081;\n box-shadow: 0 1px 0 0 #FF4081;\n }\n .mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label {\n color: #FF4081;\n }\n .mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-label,\n .mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder {\n color: rgba(255, 255, 255, 0.5);\n }\n .mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-input {\n color: rgba(255, 255, 255, 0.5);\n }\n .mdui-theme-layout-auto .mdui-textfield-disabled .mdui-textfield-input {\n border-bottom-color: rgba(255, 255, 255, 0.7);\n }\n}\n/**\n * =============================================================================\n * ************ Textfield 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFAB00;\n box-shadow: 0 1px 0 0 #FFAB00;\n}\n.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-amber .mdui-textfield-focus .mdui-icon {\n color: rgba(255, 171, 0, 0.87);\n}\n.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFD740;\n box-shadow: 0 1px 0 0 #FFD740;\n}\n.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #FFD740;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFD740;\n box-shadow: 0 1px 0 0 #FFD740;\n }\n .mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-amber.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #FFD740;\n }\n}\n.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #2962FF;\n box-shadow: 0 1px 0 0 #2962FF;\n}\n.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-blue .mdui-textfield-focus .mdui-icon {\n color: rgba(41, 98, 255, 0.87);\n}\n.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #448AFF;\n box-shadow: 0 1px 0 0 #448AFF;\n}\n.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #448AFF;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #448AFF;\n box-shadow: 0 1px 0 0 #448AFF;\n }\n .mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #448AFF;\n }\n}\n.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #00B8D4;\n box-shadow: 0 1px 0 0 #00B8D4;\n}\n.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-icon {\n color: rgba(0, 184, 212, 0.87);\n}\n.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #18FFFF;\n box-shadow: 0 1px 0 0 #18FFFF;\n}\n.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #18FFFF;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #18FFFF;\n box-shadow: 0 1px 0 0 #18FFFF;\n }\n .mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-cyan.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #18FFFF;\n }\n}\n.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #DD2C00;\n box-shadow: 0 1px 0 0 #DD2C00;\n}\n.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-icon {\n color: rgba(221, 44, 0, 0.87);\n}\n.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF6E40;\n box-shadow: 0 1px 0 0 #FF6E40;\n}\n.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #FF6E40;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF6E40;\n box-shadow: 0 1px 0 0 #FF6E40;\n }\n .mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-deep-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #FF6E40;\n }\n}\n.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #6200EA;\n box-shadow: 0 1px 0 0 #6200EA;\n}\n.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-icon {\n color: rgba(98, 0, 234, 0.87);\n}\n.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #7C4DFF;\n box-shadow: 0 1px 0 0 #7C4DFF;\n}\n.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #7C4DFF;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #7C4DFF;\n box-shadow: 0 1px 0 0 #7C4DFF;\n }\n .mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-deep-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #7C4DFF;\n }\n}\n.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #00C853;\n box-shadow: 0 1px 0 0 #00C853;\n}\n.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-green .mdui-textfield-focus .mdui-icon {\n color: rgba(0, 200, 83, 0.87);\n}\n.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #69F0AE;\n box-shadow: 0 1px 0 0 #69F0AE;\n}\n.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #69F0AE;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #69F0AE;\n box-shadow: 0 1px 0 0 #69F0AE;\n }\n .mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #69F0AE;\n }\n}\n.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #304FFE;\n box-shadow: 0 1px 0 0 #304FFE;\n}\n.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-icon {\n color: rgba(48, 79, 254, 0.87);\n}\n.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #536DFE;\n box-shadow: 0 1px 0 0 #536DFE;\n}\n.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #536DFE;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #536DFE;\n box-shadow: 0 1px 0 0 #536DFE;\n }\n .mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-indigo.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #536DFE;\n }\n}\n.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #0091EA;\n box-shadow: 0 1px 0 0 #0091EA;\n}\n.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-icon {\n color: rgba(0, 145, 234, 0.87);\n}\n.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #40C4FF;\n box-shadow: 0 1px 0 0 #40C4FF;\n}\n.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #40C4FF;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #40C4FF;\n box-shadow: 0 1px 0 0 #40C4FF;\n }\n .mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-light-blue.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #40C4FF;\n }\n}\n.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #64DD17;\n box-shadow: 0 1px 0 0 #64DD17;\n}\n.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-icon {\n color: rgba(100, 221, 23, 0.87);\n}\n.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #B2FF59;\n box-shadow: 0 1px 0 0 #B2FF59;\n}\n.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #B2FF59;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #B2FF59;\n box-shadow: 0 1px 0 0 #B2FF59;\n }\n .mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-light-green.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #B2FF59;\n }\n}\n.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #AEEA00;\n box-shadow: 0 1px 0 0 #AEEA00;\n}\n.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-lime .mdui-textfield-focus .mdui-icon {\n color: rgba(174, 234, 0, 0.87);\n}\n.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #EEFF41;\n box-shadow: 0 1px 0 0 #EEFF41;\n}\n.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #EEFF41;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #EEFF41;\n box-shadow: 0 1px 0 0 #EEFF41;\n }\n .mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-lime.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #EEFF41;\n }\n}\n.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF6D00;\n box-shadow: 0 1px 0 0 #FF6D00;\n}\n.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-orange .mdui-textfield-focus .mdui-icon {\n color: rgba(255, 109, 0, 0.87);\n}\n.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFAB40;\n box-shadow: 0 1px 0 0 #FFAB40;\n}\n.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #FFAB40;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFAB40;\n box-shadow: 0 1px 0 0 #FFAB40;\n }\n .mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-orange.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #FFAB40;\n }\n}\n.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #C51162;\n box-shadow: 0 1px 0 0 #C51162;\n}\n.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-pink .mdui-textfield-focus .mdui-icon {\n color: rgba(197, 17, 98, 0.87);\n}\n.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF4081;\n box-shadow: 0 1px 0 0 #FF4081;\n}\n.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #FF4081;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF4081;\n box-shadow: 0 1px 0 0 #FF4081;\n }\n .mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-pink.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #FF4081;\n }\n}\n.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #AA00FF;\n box-shadow: 0 1px 0 0 #AA00FF;\n}\n.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-purple .mdui-textfield-focus .mdui-icon {\n color: rgba(170, 0, 255, 0.87);\n}\n.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #E040FB;\n box-shadow: 0 1px 0 0 #E040FB;\n}\n.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #E040FB;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #E040FB;\n box-shadow: 0 1px 0 0 #E040FB;\n }\n .mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-purple.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #E040FB;\n }\n}\n.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #D50000;\n box-shadow: 0 1px 0 0 #D50000;\n}\n.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-red .mdui-textfield-focus .mdui-icon {\n color: rgba(213, 0, 0, 0.87);\n}\n.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF5252;\n box-shadow: 0 1px 0 0 #FF5252;\n}\n.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #FF5252;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FF5252;\n box-shadow: 0 1px 0 0 #FF5252;\n }\n .mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-red.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #FF5252;\n }\n}\n.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #00BFA5;\n box-shadow: 0 1px 0 0 #00BFA5;\n}\n.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-teal .mdui-textfield-focus .mdui-icon {\n color: rgba(0, 191, 165, 0.87);\n}\n.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #64FFDA;\n box-shadow: 0 1px 0 0 #64FFDA;\n}\n.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #64FFDA;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #64FFDA;\n box-shadow: 0 1px 0 0 #64FFDA;\n }\n .mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-teal.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #64FFDA;\n }\n}\n.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFD600;\n box-shadow: 0 1px 0 0 #FFD600;\n}\n.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-icon {\n color: rgba(255, 214, 0, 0.87);\n}\n.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFFF00;\n box-shadow: 0 1px 0 0 #FFFF00;\n}\n.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon {\n color: #FFFF00;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: #FFFF00;\n box-shadow: 0 1px 0 0 #FFFF00;\n }\n .mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-theme-accent-yellow.mdui-theme-layout-auto .mdui-textfield-focus .mdui-icon {\n color: #FFFF00;\n }\n}\n/**\n * =============================================================================\n * ************ Checkbox 复选框 ************\n * =============================================================================\n */\n.mdui-checkbox {\n position: relative;\n display: inline-block;\n height: 36px;\n padding-left: 36px;\n line-height: 36px;\n cursor: pointer;\n user-select: none;\n}\n.mdui-checkbox input[type=\"checkbox\"] {\n position: absolute;\n width: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n}\n/* 透明的圆形,用于生成圆形阴影 */\n.mdui-checkbox-icon {\n position: absolute;\n top: 9px;\n left: 0;\n display: inline-block;\n width: 18px;\n height: 18px;\n vertical-align: middle;\n background-color: transparent;\n border: none;\n border-radius: 18px;\n transition: box-shadow 0.14s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-checkbox-icon::after {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid rgba(0, 0, 0, 0.54);\n border-radius: 2px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n content: ' ';\n}\n.mdui-checkbox-icon::before {\n position: absolute;\n top: 2px;\n left: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 8px;\n height: 13px;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n transform: rotateZ(37deg) scale(0);\n transform-origin: 100% 100%;\n opacity: 0;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n content: ' ';\n}\n/* 各种状态的图标 */\n.mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after {\n background-color: #FF4081;\n border-color: #FF4081;\n}\n.mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::before {\n transform: rotateZ(37deg) scale(1);\n opacity: 1;\n}\n.mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FF4081;\n border-color: #FF4081;\n}\n.mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::before {\n top: 8px;\n left: 3px;\n width: 12px;\n height: 0;\n border-right: none;\n border-bottom: 2px solid #fff;\n border-radius: 1px;\n transform: rotateZ(0) scale(1);\n opacity: 1;\n}\n.mdui-checkbox input[type=\"checkbox\"]:disabled + .mdui-checkbox-icon::after {\n border-color: rgba(0, 0, 0, 0.26);\n}\n.mdui-checkbox input[type=\"checkbox\"]:disabled:checked + .mdui-checkbox-icon::after,\n.mdui-checkbox input[type=\"checkbox\"]:disabled:indeterminate + .mdui-checkbox-icon::after {\n background-color: rgba(0, 0, 0, 0.26) !important;\n border-color: transparent !important;\n}\n/* 阴影 */\n.mdui-checkbox:active input[type=\"checkbox\"] + .mdui-checkbox-icon,\n.mdui-checkbox input[type=\"checkbox\"]:focus + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.1);\n}\n.mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 64, 129, 0.16);\n}\n/**\n * =============================================================================\n * ************ Checkbox 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-amber .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FFD740;\n border-color: #FFD740;\n}\n.mdui-theme-accent-amber .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-amber .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-amber .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-amber .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 215, 64, 0.16);\n}\n.mdui-theme-accent-blue .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-blue .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #448AFF;\n border-color: #448AFF;\n}\n.mdui-theme-accent-blue .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-blue .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-blue .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-blue .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(68, 138, 255, 0.16);\n}\n.mdui-theme-accent-cyan .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-cyan .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #18FFFF;\n border-color: #18FFFF;\n}\n.mdui-theme-accent-cyan .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-cyan .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-cyan .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-cyan .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(24, 255, 255, 0.16);\n}\n.mdui-theme-accent-deep-orange .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-deep-orange .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FF6E40;\n border-color: #FF6E40;\n}\n.mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-deep-orange .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-deep-orange .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 110, 64, 0.16);\n}\n.mdui-theme-accent-deep-purple .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-deep-purple .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #7C4DFF;\n border-color: #7C4DFF;\n}\n.mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-deep-purple .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-deep-purple .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(124, 77, 255, 0.16);\n}\n.mdui-theme-accent-green .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-green .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #69F0AE;\n border-color: #69F0AE;\n}\n.mdui-theme-accent-green .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-green .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-green .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-green .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(105, 240, 174, 0.16);\n}\n.mdui-theme-accent-indigo .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-indigo .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #536DFE;\n border-color: #536DFE;\n}\n.mdui-theme-accent-indigo .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-indigo .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-indigo .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-indigo .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(83, 109, 254, 0.16);\n}\n.mdui-theme-accent-light-blue .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-light-blue .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #40C4FF;\n border-color: #40C4FF;\n}\n.mdui-theme-accent-light-blue .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-light-blue .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-light-blue .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-light-blue .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(64, 196, 255, 0.16);\n}\n.mdui-theme-accent-light-green .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-light-green .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #B2FF59;\n border-color: #B2FF59;\n}\n.mdui-theme-accent-light-green .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-light-green .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-light-green .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-light-green .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(178, 255, 89, 0.16);\n}\n.mdui-theme-accent-lime .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-lime .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #EEFF41;\n border-color: #EEFF41;\n}\n.mdui-theme-accent-lime .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-lime .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-lime .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-lime .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(238, 255, 65, 0.16);\n}\n.mdui-theme-accent-orange .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-orange .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FFAB40;\n border-color: #FFAB40;\n}\n.mdui-theme-accent-orange .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-orange .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-orange .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-orange .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 171, 64, 0.16);\n}\n.mdui-theme-accent-pink .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-pink .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FF4081;\n border-color: #FF4081;\n}\n.mdui-theme-accent-pink .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-pink .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-pink .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-pink .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 64, 129, 0.16);\n}\n.mdui-theme-accent-purple .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-purple .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #E040FB;\n border-color: #E040FB;\n}\n.mdui-theme-accent-purple .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-purple .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-purple .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-purple .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(224, 64, 251, 0.16);\n}\n.mdui-theme-accent-red .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-red .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FF5252;\n border-color: #FF5252;\n}\n.mdui-theme-accent-red .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-red .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-red .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-red .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 82, 82, 0.16);\n}\n.mdui-theme-accent-teal .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-teal .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #64FFDA;\n border-color: #64FFDA;\n}\n.mdui-theme-accent-teal .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-teal .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-teal .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-teal .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(100, 255, 218, 0.16);\n}\n.mdui-theme-accent-yellow .mdui-checkbox input[type=\"checkbox\"]:checked + .mdui-checkbox-icon::after,\n.mdui-theme-accent-yellow .mdui-checkbox input[type=\"checkbox\"]:indeterminate + .mdui-checkbox-icon::after {\n background-color: #FFFF00;\n border-color: #FFFF00;\n}\n.mdui-theme-accent-yellow .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-yellow .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):checked + .mdui-checkbox-icon,\n.mdui-theme-accent-yellow .mdui-checkbox:active input[type=\"checkbox\"]:not(:disabled):indeterminate + .mdui-checkbox-icon,\n.mdui-theme-accent-yellow .mdui-checkbox input[type=\"checkbox\"]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 0, 0.16);\n}\n/**\n * =============================================================================\n * ************ Checkbox dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-checkbox-icon::after {\n border-color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-checkbox-icon::before {\n border-right-color: #303030 !important;\n border-bottom-color: #303030 !important;\n}\n.mdui-theme-layout-dark .mdui-checkbox input[type=\"checkbox\"]:disabled + .mdui-checkbox-icon::after {\n border-color: rgba(255, 255, 255, 0.3);\n}\n.mdui-theme-layout-dark .mdui-checkbox input[type=\"checkbox\"]:disabled:checked + .mdui-checkbox-icon::after,\n.mdui-theme-layout-dark .mdui-checkbox input[type=\"checkbox\"]:disabled:indeterminate + .mdui-checkbox-icon::after {\n background-color: rgba(255, 255, 255, 0.3) !important;\n border-color: transparent !important;\n}\n.mdui-theme-layout-dark .mdui-checkbox:active input[type=\"checkbox\"] + .mdui-checkbox-icon,\n.mdui-theme-layout-dark .mdui-checkbox input[type=\"checkbox\"]:focus + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-checkbox-icon::after {\n border-color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-checkbox-icon::before {\n border-right-color: #303030 !important;\n border-bottom-color: #303030 !important;\n }\n .mdui-theme-layout-auto .mdui-checkbox input[type=\"checkbox\"]:disabled + .mdui-checkbox-icon::after {\n border-color: rgba(255, 255, 255, 0.3);\n }\n .mdui-theme-layout-auto .mdui-checkbox input[type=\"checkbox\"]:disabled:checked + .mdui-checkbox-icon::after,\n .mdui-theme-layout-auto .mdui-checkbox input[type=\"checkbox\"]:disabled:indeterminate + .mdui-checkbox-icon::after {\n background-color: rgba(255, 255, 255, 0.3) !important;\n border-color: transparent !important;\n }\n .mdui-theme-layout-auto .mdui-checkbox:active input[type=\"checkbox\"] + .mdui-checkbox-icon,\n .mdui-theme-layout-auto .mdui-checkbox input[type=\"checkbox\"]:focus + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);\n }\n}\n/**\n * =============================================================================\n * ************ Radio 单选框 ************\n * =============================================================================\n */\n.mdui-radio {\n position: relative;\n display: inline-block;\n height: 36px;\n padding-left: 36px;\n line-height: 36px;\n cursor: pointer;\n user-select: none;\n}\n.mdui-radio input {\n position: absolute;\n width: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n}\n/* 图标外圈 */\n.mdui-radio-icon {\n position: absolute;\n top: 9px;\n left: 0;\n display: inline-block;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n vertical-align: middle;\n border: 2px solid rgba(0, 0, 0, 0.54);\n border-radius: 18px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.14s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-radio-icon::before {\n position: absolute;\n top: 0;\n left: 0;\n width: 14px;\n height: 14px;\n background-color: #FF4081;\n border-radius: 14px;\n transform: scale(0);\n opacity: 0;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n content: ' ';\n}\n/* 选中状态的图标 */\n.mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FF4081;\n}\n.mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n transform: scale(0.68);\n opacity: 1;\n}\n/* 禁用状态的图标 */\n.mdui-radio input[type=\"radio\"]:disabled + .mdui-radio-icon {\n border-color: rgba(0, 0, 0, 0.26) !important;\n}\n/* 禁用且选中状态的图标 */\n.mdui-radio input[type=\"radio\"]:disabled:checked + .mdui-radio-icon::before {\n background-color: rgba(0, 0, 0, 0.26) !important;\n}\n/* 未选中、禁用时 按下的阴影 */\n.mdui-radio:active input[type=\"radio\"] + .mdui-radio-icon,\n.mdui-radio input[type=\"radio\"]:focus + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.1);\n}\n/* 已选中时按下的阴影 */\n.mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 64, 129, 0.16);\n}\n/**\n * =============================================================================\n * ************ Radio 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FFD740;\n}\n.mdui-theme-accent-amber .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #FFD740;\n}\n.mdui-theme-accent-amber .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-amber .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 215, 64, 0.16);\n}\n.mdui-theme-accent-blue .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #448AFF;\n}\n.mdui-theme-accent-blue .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #448AFF;\n}\n.mdui-theme-accent-blue .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-blue .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(68, 138, 255, 0.16);\n}\n.mdui-theme-accent-cyan .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #18FFFF;\n}\n.mdui-theme-accent-cyan .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #18FFFF;\n}\n.mdui-theme-accent-cyan .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-cyan .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(24, 255, 255, 0.16);\n}\n.mdui-theme-accent-deep-orange .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FF6E40;\n}\n.mdui-theme-accent-deep-orange .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #FF6E40;\n}\n.mdui-theme-accent-deep-orange .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-deep-orange .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 110, 64, 0.16);\n}\n.mdui-theme-accent-deep-purple .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #7C4DFF;\n}\n.mdui-theme-accent-deep-purple .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #7C4DFF;\n}\n.mdui-theme-accent-deep-purple .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-deep-purple .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(124, 77, 255, 0.16);\n}\n.mdui-theme-accent-green .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #69F0AE;\n}\n.mdui-theme-accent-green .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #69F0AE;\n}\n.mdui-theme-accent-green .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-green .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(105, 240, 174, 0.16);\n}\n.mdui-theme-accent-indigo .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #536DFE;\n}\n.mdui-theme-accent-indigo .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #536DFE;\n}\n.mdui-theme-accent-indigo .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-indigo .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(83, 109, 254, 0.16);\n}\n.mdui-theme-accent-light-blue .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #40C4FF;\n}\n.mdui-theme-accent-light-blue .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #40C4FF;\n}\n.mdui-theme-accent-light-blue .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-light-blue .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(64, 196, 255, 0.16);\n}\n.mdui-theme-accent-light-green .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #B2FF59;\n}\n.mdui-theme-accent-light-green .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #B2FF59;\n}\n.mdui-theme-accent-light-green .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-light-green .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(178, 255, 89, 0.16);\n}\n.mdui-theme-accent-lime .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #EEFF41;\n}\n.mdui-theme-accent-lime .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #EEFF41;\n}\n.mdui-theme-accent-lime .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-lime .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(238, 255, 65, 0.16);\n}\n.mdui-theme-accent-orange .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FFAB40;\n}\n.mdui-theme-accent-orange .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #FFAB40;\n}\n.mdui-theme-accent-orange .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-orange .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 171, 64, 0.16);\n}\n.mdui-theme-accent-pink .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FF4081;\n}\n.mdui-theme-accent-pink .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #FF4081;\n}\n.mdui-theme-accent-pink .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-pink .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 64, 129, 0.16);\n}\n.mdui-theme-accent-purple .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #E040FB;\n}\n.mdui-theme-accent-purple .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #E040FB;\n}\n.mdui-theme-accent-purple .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-purple .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(224, 64, 251, 0.16);\n}\n.mdui-theme-accent-red .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FF5252;\n}\n.mdui-theme-accent-red .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #FF5252;\n}\n.mdui-theme-accent-red .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-red .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 82, 82, 0.16);\n}\n.mdui-theme-accent-teal .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #64FFDA;\n}\n.mdui-theme-accent-teal .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #64FFDA;\n}\n.mdui-theme-accent-teal .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-teal .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(100, 255, 218, 0.16);\n}\n.mdui-theme-accent-yellow .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: #FFFF00;\n}\n.mdui-theme-accent-yellow .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon::before {\n background-color: #FFFF00;\n}\n.mdui-theme-accent-yellow .mdui-radio:active input[type=\"radio\"]:checked:not(:disabled) + .mdui-radio-icon,\n.mdui-theme-accent-yellow .mdui-radio input[type=\"radio\"]:focus:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 0, 0.16);\n}\n/**\n * =============================================================================\n * ************ Radio dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-radio-icon {\n border-color: rgba(255, 255, 255, 0.7);\n}\n.mdui-theme-layout-dark .mdui-radio input[type=\"radio\"]:disabled + .mdui-radio-icon {\n border-color: rgba(255, 255, 255, 0.3) !important;\n}\n.mdui-theme-layout-dark .mdui-radio input[type=\"radio\"]:disabled:checked + .mdui-radio-icon::before {\n background-color: rgba(255, 255, 255, 0.3) !important;\n}\n.mdui-theme-layout-dark .mdui-radio:active input[type=\"radio\"] + .mdui-radio-icon,\n.mdui-theme-layout-dark .mdui-radio input[type=\"radio\"]:focus + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-radio-icon {\n border-color: rgba(255, 255, 255, 0.7);\n }\n .mdui-theme-layout-auto .mdui-radio input[type=\"radio\"]:disabled + .mdui-radio-icon {\n border-color: rgba(255, 255, 255, 0.3) !important;\n }\n .mdui-theme-layout-auto .mdui-radio input[type=\"radio\"]:disabled:checked + .mdui-radio-icon::before {\n background-color: rgba(255, 255, 255, 0.3) !important;\n }\n .mdui-theme-layout-auto .mdui-radio:active input[type=\"radio\"] + .mdui-radio-icon,\n .mdui-theme-layout-auto .mdui-radio input[type=\"radio\"]:focus + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);\n }\n}\n/**\n * =============================================================================\n * ************ Switch 单选框 ************\n * =============================================================================\n */\n.mdui-switch {\n display: inline-block;\n height: 36px;\n line-height: 36px;\n cursor: pointer;\n user-select: none;\n}\n.mdui-switch input {\n position: absolute;\n width: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n}\n/* 图标轨道 */\n.mdui-switch-icon {\n position: relative;\n display: inline-block;\n width: 36px;\n height: 14px;\n vertical-align: middle;\n background-color: rgba(0, 0, 0, 0.38);\n border-radius: 14px;\n transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-switch-icon::before {\n position: absolute;\n top: -3px;\n left: -3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n background-color: #FAFAFA;\n border-radius: 20px;\n transition: box-shadow 0.14s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1), left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n content: ' ';\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12);\n}\n/* 选中状态的图标 */\n.mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 64, 129, 0.5);\n}\n.mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n left: 20px;\n background-color: #FF4081;\n}\n/* 未选中时或禁用时 按下的阴影 */\n.mdui-switch:active input[type=\"checkbox\"] + .mdui-switch-icon::before,\n.mdui-switch input[type=\"checkbox\"]:focus + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(0, 0, 0, 0.1);\n}\n/* 已选中时按下的阴影 */\n.mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 64, 129, 0.16);\n}\n/* 禁用状态 */\n.mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon {\n background-color: rgba(0, 0, 0, 0.12) !important;\n}\n.mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon::before {\n background-color: #BDBDBD !important;\n}\n/**\n * =============================================================================\n * ************ Switch 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 215, 64, 0.5);\n}\n.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFD740;\n}\n.mdui-theme-accent-amber .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 215, 64, 0.16);\n}\n.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(68, 138, 255, 0.5);\n}\n.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #448AFF;\n}\n.mdui-theme-accent-blue .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(68, 138, 255, 0.16);\n}\n.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(24, 255, 255, 0.5);\n}\n.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #18FFFF;\n}\n.mdui-theme-accent-cyan .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(24, 255, 255, 0.16);\n}\n.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 110, 64, 0.5);\n}\n.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF6E40;\n}\n.mdui-theme-accent-deep-orange .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 110, 64, 0.16);\n}\n.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(124, 77, 255, 0.5);\n}\n.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #7C4DFF;\n}\n.mdui-theme-accent-deep-purple .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(124, 77, 255, 0.16);\n}\n.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(105, 240, 174, 0.5);\n}\n.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #69F0AE;\n}\n.mdui-theme-accent-green .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(105, 240, 174, 0.16);\n}\n.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(83, 109, 254, 0.5);\n}\n.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #536DFE;\n}\n.mdui-theme-accent-indigo .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(83, 109, 254, 0.16);\n}\n.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(64, 196, 255, 0.5);\n}\n.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #40C4FF;\n}\n.mdui-theme-accent-light-blue .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(64, 196, 255, 0.16);\n}\n.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(178, 255, 89, 0.5);\n}\n.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #B2FF59;\n}\n.mdui-theme-accent-light-green .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(178, 255, 89, 0.16);\n}\n.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(238, 255, 65, 0.5);\n}\n.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #EEFF41;\n}\n.mdui-theme-accent-lime .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(238, 255, 65, 0.16);\n}\n.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 171, 64, 0.5);\n}\n.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFAB40;\n}\n.mdui-theme-accent-orange .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 171, 64, 0.16);\n}\n.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 64, 129, 0.5);\n}\n.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF4081;\n}\n.mdui-theme-accent-pink .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 64, 129, 0.16);\n}\n.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(224, 64, 251, 0.5);\n}\n.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #E040FB;\n}\n.mdui-theme-accent-purple .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(224, 64, 251, 0.16);\n}\n.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 82, 82, 0.5);\n}\n.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF5252;\n}\n.mdui-theme-accent-red .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 82, 82, 0.16);\n}\n.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(100, 255, 218, 0.5);\n}\n.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #64FFDA;\n}\n.mdui-theme-accent-teal .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(100, 255, 218, 0.16);\n}\n.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 255, 0, 0.5);\n}\n.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFFF00;\n}\n.mdui-theme-accent-yellow .mdui-switch:active input[type=\"checkbox\"]:checked:not(:disabled) + .mdui-switch-icon::before,\n.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:focus:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 255, 0, 0.16);\n}\n/**\n * =============================================================================\n * ************ Radio dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-switch-icon {\n background-color: rgba(255, 255, 255, 0.3);\n}\n.mdui-theme-layout-dark .mdui-switch-icon::before {\n background-color: #BDBDBD;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 229, 127, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFE57F;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(130, 177, 255, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #82B1FF;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(132, 255, 255, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #84FFFF;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 158, 128, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF9E80;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(179, 136, 255, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #B388FF;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(185, 246, 202, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #B9F6CA;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(140, 158, 255, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #8C9EFF;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(128, 216, 255, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #80D8FF;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(204, 255, 144, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #CCFF90;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(244, 255, 129, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #F4FF81;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 209, 128, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFD180;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 128, 171, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF80AB;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(234, 128, 252, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #EA80FC;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 138, 128, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF8A80;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(167, 255, 235, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #A7FFEB;\n}\n.mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 255, 141, 0.5);\n}\n.mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFFF8D;\n}\n.mdui-theme-layout-dark .mdui-switch:active input[type=\"checkbox\"] + .mdui-switch-icon::before,\n.mdui-theme-layout-dark .mdui-switch input[type=\"checkbox\"]:focus + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 255, 255, 0.1);\n}\n.mdui-theme-layout-dark .mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon {\n background-color: rgba(255, 255, 255, 0.1) !important;\n}\n.mdui-theme-layout-dark .mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon::before {\n background-color: #424242 !important;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-switch-icon {\n background-color: rgba(255, 255, 255, 0.3);\n }\n .mdui-theme-layout-auto .mdui-switch-icon::before {\n background-color: #BDBDBD;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 229, 127, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-amber .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFE57F;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(130, 177, 255, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #82B1FF;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(132, 255, 255, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-cyan .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #84FFFF;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 158, 128, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-deep-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF9E80;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(179, 136, 255, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-deep-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #B388FF;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(185, 246, 202, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #B9F6CA;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(140, 158, 255, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-indigo .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #8C9EFF;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(128, 216, 255, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-light-blue .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #80D8FF;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(204, 255, 144, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-light-green .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #CCFF90;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(244, 255, 129, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-lime .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #F4FF81;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 209, 128, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-orange .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFD180;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 128, 171, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-pink .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF80AB;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(234, 128, 252, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-purple .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #EA80FC;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 138, 128, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-red .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FF8A80;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(167, 255, 235, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-teal .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #A7FFEB;\n }\n .mdui-theme-layout-auto.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(255, 255, 141, 0.5);\n }\n .mdui-theme-layout-auto.mdui-theme-accent-yellow .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon::before {\n background-color: #FFFF8D;\n }\n .mdui-theme-layout-auto .mdui-switch:active input[type=\"checkbox\"] + .mdui-switch-icon::before,\n .mdui-theme-layout-auto .mdui-switch input[type=\"checkbox\"]:focus + .mdui-switch-icon::before {\n box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 0 15px rgba(255, 255, 255, 0.1);\n }\n .mdui-theme-layout-auto .mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon {\n background-color: rgba(255, 255, 255, 0.1) !important;\n }\n .mdui-theme-layout-auto .mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon::before {\n background-color: #424242 !important;\n }\n}\n/**\n * =============================================================================\n * ************ Slider 滑块 ************\n * =============================================================================\n */\n.mdui-slider {\n position: relative;\n display: block;\n width: 100%;\n height: 36px;\n}\n.mdui-slider input[type=\"range\"] {\n position: absolute;\n top: 50%;\n z-index: 2;\n width: 100%;\n height: 20px;\n margin-top: -10px;\n cursor: pointer;\n opacity: 0;\n appearance: none;\n}\n.mdui-slider-track,\n.mdui-slider-fill {\n position: absolute;\n top: 50%;\n box-sizing: border-box;\n height: 2px;\n margin-top: -1px;\n}\n.mdui-slider-track::before,\n.mdui-slider-fill::before {\n display: block;\n width: 100%;\n height: 100%;\n content: ' ';\n}\n/* 轨道 */\n.mdui-slider-track {\n right: 0;\n}\n.mdui-slider-track::before {\n background-color: #bdbdbd;\n transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n/* 已滑动部分 */\n.mdui-slider-fill {\n left: 0;\n}\n.mdui-slider-fill::before {\n background-color: #FF4081;\n}\n/* 滑块 */\n.mdui-slider-thumb {\n position: absolute;\n top: 50%;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin-top: -6px;\n background-color: #FF4081;\n border: 2px solid #FF4081;\n border-radius: 50%;\n transform: translate(-50%);\n transition: background 0.45s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.45s cubic-bezier(0.4, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), border-radius 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: background, border-color, transform, border-radius;\n}\n/**\n * =============================================================================\n * ************ Slider 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-slider-fill::before {\n background-color: #FFD740;\n}\n.mdui-theme-accent-amber .mdui-slider-thumb {\n background-color: #FFD740;\n border: 2px solid #FFD740;\n}\n.mdui-theme-accent-blue .mdui-slider-fill::before {\n background-color: #448AFF;\n}\n.mdui-theme-accent-blue .mdui-slider-thumb {\n background-color: #448AFF;\n border: 2px solid #448AFF;\n}\n.mdui-theme-accent-cyan .mdui-slider-fill::before {\n background-color: #18FFFF;\n}\n.mdui-theme-accent-cyan .mdui-slider-thumb {\n background-color: #18FFFF;\n border: 2px solid #18FFFF;\n}\n.mdui-theme-accent-deep-orange .mdui-slider-fill::before {\n background-color: #FF6E40;\n}\n.mdui-theme-accent-deep-orange .mdui-slider-thumb {\n background-color: #FF6E40;\n border: 2px solid #FF6E40;\n}\n.mdui-theme-accent-deep-purple .mdui-slider-fill::before {\n background-color: #7C4DFF;\n}\n.mdui-theme-accent-deep-purple .mdui-slider-thumb {\n background-color: #7C4DFF;\n border: 2px solid #7C4DFF;\n}\n.mdui-theme-accent-green .mdui-slider-fill::before {\n background-color: #69F0AE;\n}\n.mdui-theme-accent-green .mdui-slider-thumb {\n background-color: #69F0AE;\n border: 2px solid #69F0AE;\n}\n.mdui-theme-accent-indigo .mdui-slider-fill::before {\n background-color: #536DFE;\n}\n.mdui-theme-accent-indigo .mdui-slider-thumb {\n background-color: #536DFE;\n border: 2px solid #536DFE;\n}\n.mdui-theme-accent-light-blue .mdui-slider-fill::before {\n background-color: #40C4FF;\n}\n.mdui-theme-accent-light-blue .mdui-slider-thumb {\n background-color: #40C4FF;\n border: 2px solid #40C4FF;\n}\n.mdui-theme-accent-light-green .mdui-slider-fill::before {\n background-color: #B2FF59;\n}\n.mdui-theme-accent-light-green .mdui-slider-thumb {\n background-color: #B2FF59;\n border: 2px solid #B2FF59;\n}\n.mdui-theme-accent-lime .mdui-slider-fill::before {\n background-color: #EEFF41;\n}\n.mdui-theme-accent-lime .mdui-slider-thumb {\n background-color: #EEFF41;\n border: 2px solid #EEFF41;\n}\n.mdui-theme-accent-orange .mdui-slider-fill::before {\n background-color: #FFAB40;\n}\n.mdui-theme-accent-orange .mdui-slider-thumb {\n background-color: #FFAB40;\n border: 2px solid #FFAB40;\n}\n.mdui-theme-accent-pink .mdui-slider-fill::before {\n background-color: #FF4081;\n}\n.mdui-theme-accent-pink .mdui-slider-thumb {\n background-color: #FF4081;\n border: 2px solid #FF4081;\n}\n.mdui-theme-accent-purple .mdui-slider-fill::before {\n background-color: #E040FB;\n}\n.mdui-theme-accent-purple .mdui-slider-thumb {\n background-color: #E040FB;\n border: 2px solid #E040FB;\n}\n.mdui-theme-accent-red .mdui-slider-fill::before {\n background-color: #FF5252;\n}\n.mdui-theme-accent-red .mdui-slider-thumb {\n background-color: #FF5252;\n border: 2px solid #FF5252;\n}\n.mdui-theme-accent-teal .mdui-slider-fill::before {\n background-color: #64FFDA;\n}\n.mdui-theme-accent-teal .mdui-slider-thumb {\n background-color: #64FFDA;\n border: 2px solid #64FFDA;\n}\n.mdui-theme-accent-yellow .mdui-slider-fill::before {\n background-color: #FFFF00;\n}\n.mdui-theme-accent-yellow .mdui-slider-thumb {\n background-color: #FFFF00;\n border: 2px solid #FFFF00;\n}\n/**\n * =============================================================================\n * ============ Slider 的不同状态 ============\n * =============================================================================\n */\n/* 鼠标按下状态 */\n.mdui-slider-focus .mdui-slider-track::before {\n background-color: #9e9e9e;\n}\n.mdui-slider-focus .mdui-slider-thumb {\n transform: translate(-50%) scale(1.6);\n}\n/* 滑块值为 0 */\n.mdui-slider-zero .mdui-slider-thumb {\n background-color: #fff;\n border-color: #bdbdbd;\n}\n/* 滑块值为 0,且鼠标按下 */\n.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb {\n border-color: #9e9e9e;\n}\n/* 禁用状态 */\n.mdui-slider-disabled input[type=\"range\"] {\n cursor: default;\n}\n.mdui-slider-disabled .mdui-slider-track::before {\n background-color: #bdbdbd;\n}\n.mdui-slider-disabled .mdui-slider-fill::before {\n background-color: #bdbdbd;\n}\n.mdui-slider-disabled .mdui-slider-thumb {\n background-color: #bdbdbd;\n border-color: transparent !important;\n transform: translate(-50%) scale(0.72);\n}\n/**\n * =============================================================================\n * ============ 间续型滑块 ============\n * =============================================================================\n */\n.mdui-slider-discrete .mdui-slider-thumb {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n margin-left: -15px;\n border: none;\n transform: rotate(-45deg) scale(0.4);\n}\n.mdui-slider-discrete .mdui-slider-thumb span {\n position: absolute;\n top: 9px;\n left: -1px;\n width: 100%;\n color: #fff;\n font-size: 12px;\n text-align: center;\n transform: rotate(45deg);\n opacity: 0;\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb {\n border-radius: 15px 15px 15px 0;\n transform: rotate(-45deg) scale(1) translate(22px, -22px);\n}\n.mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb span {\n opacity: 1;\n}\n.mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb {\n background-color: #323232;\n}\n.mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb {\n background-color: #bdbdbd;\n}\n.mdui-slider-discrete.mdui-slider-disabled .mdui-slider-thumb {\n transform: rotate(-45deg) scale(0.288);\n}\n.mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb {\n background-color: #bdbdbd;\n}\n/**\n * =============================================================================\n * ************ Slider dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-slider-track::before {\n background-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-focus .mdui-slider-track::before {\n background-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-zero .mdui-slider-thumb {\n background-color: #303030;\n border-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb {\n border-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-track::before {\n background-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-fill::before {\n background-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-thumb {\n background-color: #4c4c4c;\n}\n.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb {\n background-color: #fefefe;\n}\n.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb {\n background-color: #5c5c5c;\n}\n.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb {\n background-color: #4c4c4c;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-slider-track::before {\n background-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-focus .mdui-slider-track::before {\n background-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-zero .mdui-slider-thumb {\n background-color: #303030;\n border-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb {\n border-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-disabled .mdui-slider-track::before {\n background-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-disabled .mdui-slider-fill::before {\n background-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-disabled .mdui-slider-thumb {\n background-color: #4c4c4c;\n }\n .mdui-theme-layout-auto .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb {\n background-color: #fefefe;\n }\n .mdui-theme-layout-auto .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb {\n background-color: #5c5c5c;\n }\n .mdui-theme-layout-auto .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb {\n background-color: #4c4c4c;\n }\n}\n/**\n * =============================================================================\n * ************ Button 按钮 ************\n * =============================================================================\n */\n/* 默认为 Flat 扁平按钮 */\n.mdui-btn,\n.mdui-fab {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n min-width: 88px;\n height: 36px;\n margin: 0;\n padding: 0 16px;\n overflow: hidden;\n color: inherit;\n font-weight: 500;\n font-size: 14px;\n line-height: 36px;\n letter-spacing: 0.04em;\n white-space: nowrap;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n vertical-align: middle;\n background: transparent;\n border: none;\n border-radius: 2px;\n outline: none;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1);\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n touch-action: manipulation;\n will-change: box-shadow;\n zoom: 1;\n -webkit-user-drag: none;\n}\n.mdui-btn:hover,\n.mdui-fab:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n.mdui-btn:not(.mdui-ripple):active,\n.mdui-fab:not(.mdui-ripple):active {\n background-color: rgba(0, 0, 0, 0.165);\n}\n.mdui-btn[class*=\"mdui-color-\"]:hover,\n.mdui-fab[class*=\"mdui-color-\"]:hover {\n opacity: 0.87;\n}\n.mdui-btn:not(.mdui-ripple)[class*=\"mdui-color-\"]:active,\n.mdui-fab:not(.mdui-ripple)[class*=\"mdui-color-\"]:active {\n opacity: 0.76;\n}\n/* 按钮内的图标 */\n.mdui-btn .mdui-icon-left,\n.mdui-btn .mdui-icon-right,\n.mdui-btn .mdui-icon-left::before,\n.mdui-btn .mdui-icon-right::before {\n height: inherit;\n font-size: 1.3em;\n line-height: inherit;\n}\n.mdui-btn .mdui-icon-left {\n float: left;\n margin-right: 0.4em;\n}\n.mdui-btn .mdui-icon-right {\n float: right;\n margin-left: 0.4em;\n}\ninput.mdui-btn[type=\"submit\"] {\n appearance: none;\n}\n/* Raised button 浮动按钮 */\n.mdui-btn-raised {\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-btn-raised:hover {\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-btn-raised:active {\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n/* 禁用按钮 */\n.mdui-btn[disabled],\n.mdui-fab[disabled],\n.mdui-btn[disabled]:hover,\n.mdui-fab[disabled]:hover,\n.mdui-btn[disabled]:active,\n.mdui-fab[disabled]:active,\n.mdui-btn[disabled]:focus,\n.mdui-fab[disabled]:focus {\n color: rgba(0, 0, 0, 0.26) !important;\n background-color: transparent !important;\n cursor: default !important;\n opacity: 1 !important;\n box-shadow: none !important;\n}\n.mdui-btn[disabled] .mdui-icon,\n.mdui-fab[disabled] .mdui-icon,\n.mdui-btn[disabled]:hover .mdui-icon,\n.mdui-fab[disabled]:hover .mdui-icon,\n.mdui-btn[disabled]:active .mdui-icon,\n.mdui-fab[disabled]:active .mdui-icon,\n.mdui-btn[disabled]:focus .mdui-icon,\n.mdui-fab[disabled]:focus .mdui-icon {\n color: rgba(0, 0, 0, 0.26) !important;\n}\n/* 禁用状态浮动按钮和浮动操作按钮 */\n.mdui-btn-raised[disabled],\n.mdui-fab[disabled],\n.mdui-btn-raised[disabled]:hover,\n.mdui-fab[disabled]:hover,\n.mdui-btn-raised[disabled]:active,\n.mdui-fab[disabled]:active,\n.mdui-btn-raised[disabled]:focus,\n.mdui-fab[disabled]:focus {\n background-color: rgba(0, 0, 0, 0.12) !important;\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12) !important;\n}\n/* 加粗按钮文本 */\n.mdui-btn-bold {\n font-weight: bold;\n}\n/* 图标按钮 */\n.mdui-btn-icon {\n width: 36px;\n min-width: 36px;\n height: 36px;\n margin-right: 0;\n margin-left: 0;\n padding: 0;\n overflow: hidden;\n font-size: 24px;\n line-height: normal;\n border-radius: 50%;\n}\n.mdui-btn-icon .mdui-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 24px;\n line-height: 24px;\n transform: translate(-12px, -12px);\n}\n.mdui-btn-icon.mdui-ripple {\n transform: translateZ(0);\n}\n/* 按钮 100% 宽度 */\n.mdui-btn-block {\n display: block;\n width: 100%;\n}\n/* 密集型按钮 */\n.mdui-btn-dense {\n height: 32px;\n font-size: 13px;\n line-height: 32px;\n}\n.mdui-btn-dense.mdui-btn-icon {\n width: 32px;\n min-width: 32px;\n}\n/* 按钮组 */\n.mdui-btn-group {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.mdui-btn-group .mdui-btn {\n float: left;\n min-width: inherit;\n padding: 0 12px;\n color: rgba(0, 0, 0, 0.54);\n border-radius: 0;\n}\n.mdui-btn-group .mdui-btn::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n border-left: 1px solid transparent;\n content: ' ';\n}\n.mdui-btn-group .mdui-btn:first-child {\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n}\n.mdui-btn-group .mdui-btn:first-child::before {\n border-left: none;\n}\n.mdui-btn-group .mdui-btn:last-child {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n}\n.mdui-btn-group .mdui-btn.mdui-btn-active {\n color: rgba(0, 0, 0, 0.87);\n background-color: rgba(0, 0, 0, 0.215);\n}\n.mdui-btn-group .mdui-btn.mdui-btn-active + .mdui-btn-active::before {\n border-left: 1px solid rgba(0, 0, 0, 0.145);\n}\n/**\n * =============================================================================\n * ************ Button dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-btn:hover,\n.mdui-theme-layout-dark .mdui-fab:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple):active,\n.mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple):active {\n background-color: rgba(255, 255, 255, 0.165);\n}\n.mdui-theme-layout-dark .mdui-btn[class*=\"mdui-color-\"]:hover,\n.mdui-theme-layout-dark .mdui-fab[class*=\"mdui-color-\"]:hover {\n opacity: 0.87;\n}\n.mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple)[class*=\"mdui-color-\"]:active,\n.mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple)[class*=\"mdui-color-\"]:active {\n opacity: 0.76;\n}\n.mdui-theme-layout-dark .mdui-btn[disabled],\n.mdui-theme-layout-dark .mdui-fab[disabled],\n.mdui-theme-layout-dark .mdui-btn[disabled]:hover,\n.mdui-theme-layout-dark .mdui-fab[disabled]:hover,\n.mdui-theme-layout-dark .mdui-btn[disabled]:active,\n.mdui-theme-layout-dark .mdui-fab[disabled]:active,\n.mdui-theme-layout-dark .mdui-btn[disabled]:focus,\n.mdui-theme-layout-dark .mdui-fab[disabled]:focus {\n color: rgba(255, 255, 255, 0.3) !important;\n background-color: transparent !important;\n}\n.mdui-theme-layout-dark .mdui-btn[disabled] .mdui-icon,\n.mdui-theme-layout-dark .mdui-fab[disabled] .mdui-icon,\n.mdui-theme-layout-dark .mdui-btn[disabled]:hover .mdui-icon,\n.mdui-theme-layout-dark .mdui-fab[disabled]:hover .mdui-icon,\n.mdui-theme-layout-dark .mdui-btn[disabled]:active .mdui-icon,\n.mdui-theme-layout-dark .mdui-fab[disabled]:active .mdui-icon,\n.mdui-theme-layout-dark .mdui-btn[disabled]:focus .mdui-icon,\n.mdui-theme-layout-dark .mdui-fab[disabled]:focus .mdui-icon {\n color: rgba(255, 255, 255, 0.3) !important;\n}\n.mdui-theme-layout-dark .mdui-btn-raised[disabled],\n.mdui-theme-layout-dark .mdui-fab[disabled],\n.mdui-theme-layout-dark .mdui-btn-raised[disabled]:hover,\n.mdui-theme-layout-dark .mdui-fab[disabled]:hover,\n.mdui-theme-layout-dark .mdui-btn-raised[disabled]:active,\n.mdui-theme-layout-dark .mdui-fab[disabled]:active,\n.mdui-theme-layout-dark .mdui-btn-raised[disabled]:focus,\n.mdui-theme-layout-dark .mdui-fab[disabled]:focus {\n background-color: rgba(255, 255, 255, 0.12) !important;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-btn:hover,\n .mdui-theme-layout-auto .mdui-fab:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n .mdui-theme-layout-auto .mdui-btn:not(.mdui-ripple):active,\n .mdui-theme-layout-auto .mdui-fab:not(.mdui-ripple):active {\n background-color: rgba(255, 255, 255, 0.165);\n }\n .mdui-theme-layout-auto .mdui-btn[class*=\"mdui-color-\"]:hover,\n .mdui-theme-layout-auto .mdui-fab[class*=\"mdui-color-\"]:hover {\n opacity: 0.87;\n }\n .mdui-theme-layout-auto .mdui-btn:not(.mdui-ripple)[class*=\"mdui-color-\"]:active,\n .mdui-theme-layout-auto .mdui-fab:not(.mdui-ripple)[class*=\"mdui-color-\"]:active {\n opacity: 0.76;\n }\n .mdui-theme-layout-auto .mdui-btn[disabled],\n .mdui-theme-layout-auto .mdui-fab[disabled],\n .mdui-theme-layout-auto .mdui-btn[disabled]:hover,\n .mdui-theme-layout-auto .mdui-fab[disabled]:hover,\n .mdui-theme-layout-auto .mdui-btn[disabled]:active,\n .mdui-theme-layout-auto .mdui-fab[disabled]:active,\n .mdui-theme-layout-auto .mdui-btn[disabled]:focus,\n .mdui-theme-layout-auto .mdui-fab[disabled]:focus {\n color: rgba(255, 255, 255, 0.3) !important;\n background-color: transparent !important;\n }\n .mdui-theme-layout-auto .mdui-btn[disabled] .mdui-icon,\n .mdui-theme-layout-auto .mdui-fab[disabled] .mdui-icon,\n .mdui-theme-layout-auto .mdui-btn[disabled]:hover .mdui-icon,\n .mdui-theme-layout-auto .mdui-fab[disabled]:hover .mdui-icon,\n .mdui-theme-layout-auto .mdui-btn[disabled]:active .mdui-icon,\n .mdui-theme-layout-auto .mdui-fab[disabled]:active .mdui-icon,\n .mdui-theme-layout-auto .mdui-btn[disabled]:focus .mdui-icon,\n .mdui-theme-layout-auto .mdui-fab[disabled]:focus .mdui-icon {\n color: rgba(255, 255, 255, 0.3) !important;\n }\n .mdui-theme-layout-auto .mdui-btn-raised[disabled],\n .mdui-theme-layout-auto .mdui-fab[disabled],\n .mdui-theme-layout-auto .mdui-btn-raised[disabled]:hover,\n .mdui-theme-layout-auto .mdui-fab[disabled]:hover,\n .mdui-theme-layout-auto .mdui-btn-raised[disabled]:active,\n .mdui-theme-layout-auto .mdui-fab[disabled]:active,\n .mdui-theme-layout-auto .mdui-btn-raised[disabled]:focus,\n .mdui-theme-layout-auto .mdui-fab[disabled]:focus {\n background-color: rgba(255, 255, 255, 0.12) !important;\n }\n}\n/**\n * =============================================================================\n * ************ Fab 浮动操作按钮 ************\n * =============================================================================\n */\n/* 浮动操作按钮 */\n.mdui-fab {\n width: 56px;\n min-width: 56px;\n height: 56px;\n margin: auto;\n padding: 0 !important;\n overflow: hidden;\n font-size: 24px;\n line-height: normal !important;\n border-radius: 50%;\n box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-fab:hover {\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mdui-fab:active {\n box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12);\n}\n.mdui-fab .mdui-icon {\n position: absolute;\n top: 0;\n left: 0;\n width: 24px;\n margin-top: 16px;\n margin-left: 16px;\n line-height: 24px;\n}\n/* mini 型浮动操作按钮 */\n.mdui-fab-mini {\n width: 40px;\n min-width: 40px;\n height: 40px;\n}\n.mdui-fab-mini .mdui-icon {\n margin-top: 8px;\n margin-left: 8px;\n}\n/* 固定到右下角的 FAB 按钮 */\n.mdui-fab-fixed,\n.mdui-fab-wrapper {\n position: fixed !important;\n /* 手机平板上距离屏幕右下角 16px */\n right: 16px;\n bottom: 16px;\n}\n@media (min-width: 1024px) {\n .mdui-fab-fixed,\n .mdui-fab-wrapper {\n /* 电脑上距离屏幕右下角 24px */\n right: 24px;\n bottom: 24px;\n }\n}\n/* 含菜单的浮动操作按钮 */\n.mdui-fab-wrapper {\n position: relative;\n z-index: 4000;\n width: 56px;\n height: 56px;\n padding-top: 8px;\n text-align: center;\n}\n.mdui-fab-wrapper > .mdui-fab .mdui-icon:not(.mdui-fab-opened) {\n opacity: 1;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: opacity, transform;\n}\n.mdui-fab-wrapper > .mdui-fab .mdui-icon.mdui-fab-opened {\n transform: rotate(225deg);\n opacity: 0;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: opacity, transform;\n}\n.mdui-fab-wrapper > .mdui-fab.mdui-fab-opened .mdui-icon:not(.mdui-fab-opened) {\n transform: rotate(225deg);\n opacity: 0;\n}\n.mdui-fab-wrapper > .mdui-fab.mdui-fab-opened .mdui-icon.mdui-fab-opened {\n transform: rotate(360deg);\n opacity: 1;\n}\n.mdui-fab-wrapper > .mdui-fab-mini {\n margin-top: 8px;\n}\n.mdui-fab-wrapper .mdui-fab-dial {\n position: absolute;\n right: 0;\n bottom: 64px;\n left: 0;\n height: 0;\n text-align: center;\n visibility: visible;\n}\n.mdui-fab-wrapper .mdui-fab-dial .mdui-fab {\n margin: 8px 0;\n transform: scale(0);\n opacity: 0;\n transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-fab-wrapper .mdui-fab-dial.mdui-fab-dial-show .mdui-fab {\n transform: scale(1);\n opacity: 1;\n}\n/* 添加类 .mdui-fab-hide 以动画的形式隐藏按钮 */\n.mdui-fab,\n.mdui-fab-mini,\n.mdui-fab-wrapper {\n transform: scale(1) translateZ(0);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), transform 0.2s;\n will-change: transform;\n}\n.mdui-fab.mdui-fab-hide,\n.mdui-fab-mini.mdui-fab-hide,\n.mdui-fab-wrapper.mdui-fab-hide {\n transform: scale(0) translateZ(0);\n}\n/**\n * =============================================================================\n * ************ Select 下拉选择 ************\n * =============================================================================\n */\n.mdui-select {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n max-width: 100%;\n height: 36px;\n padding-right: 24px;\n padding-left: 0;\n font-size: 16px;\n font-family: Roboto, Noto, Helvetica, Arial, sans-serif;\n vertical-align: middle;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' opacity='.54'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right center;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n outline: none;\n cursor: pointer;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 0.2s;\n transition-property: background-color, box-shadow, background-position-x;\n appearance: none;\n user-select: none;\n will-change: background-color, box-shadow, background-position-x;\n}\n.mdui-select.mdui-select-open {\n border-bottom: none;\n}\n.mdui-select-position-top {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' opacity='.54'/%3E%3C/svg%3E\");\n}\n/* 底部和顶部菜单的样式 */\n.mdui-select-open.mdui-select-position-top,\n.mdui-select-open.mdui-select-position-bottom {\n z-index: 99999;\n background-color: #fff;\n /* stylelint-disable-next-line */\n background-position-x: calc(100% - 12px);\n border-radius: 2px;\n}\n.mdui-select-open.mdui-select-position-top {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid transparent;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 0 10px 10px -3px rgba(0, 0, 0, 0.2), 0 0 14px 1px rgba(0, 0, 0, 0.14), 0 -7px 24px 2px rgba(0, 0, 0, 0.12);\n}\n.mdui-select-open.mdui-select-position-top .mdui-select-menu {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n box-shadow: 0 -4px 4px -2px rgba(0, 0, 0, 0.06), 8px 0 8px -4px rgba(0, 0, 0, 0.12), -8px 0 8px -4px rgba(0, 0, 0, 0.12);\n}\n.mdui-select-open.mdui-select-position-bottom {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mdui-select-open.mdui-select-position-bottom .mdui-select-menu {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 9px 9px 1px rgba(0, 0, 0, 0.14), 0 8px 8px 2px rgba(0, 0, 0, 0.06);\n}\n/* 当前选中项文本 */\n.mdui-select-selected {\n position: absolute;\n top: 50%;\n right: 24px;\n left: 0;\n display: block;\n transform: translateY(-50%);\n transition: left 0.2s cubic-bezier(0, 0, 0.2, 1);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-select-open .mdui-select-selected {\n right: 32px;\n left: 16px;\n}\n.mdui-select-open.mdui-select-position-auto .mdui-select-selected {\n visibility: hidden;\n}\n/* 菜单 */\n.mdui-select-menu {\n position: relative;\n z-index: 99999;\n box-sizing: border-box;\n height: 36px;\n margin: 0 -24px 0 0;\n overflow-y: scroll;\n color: rgba(0, 0, 0, 0.87);\n background-color: #fff;\n border-radius: 2px;\n transform: scale(1, 0);\n visibility: hidden;\n cursor: default;\n opacity: 0;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 0.2s;\n transition-property: transform, opacity, visibility;\n will-change: transform, opacity, visibility;\n -webkit-overflow-scrolling: touch;\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mdui-select-open .mdui-select-menu {\n overflow-y: hidden;\n transform: scale(1, 1);\n visibility: visible;\n opacity: 1;\n}\n.mdui-select-closing .mdui-select-menu {\n overflow-y: hidden;\n box-shadow: none;\n transform: scale(1, 1);\n visibility: visible;\n opacity: 0;\n}\n/* 菜单项 */\n.mdui-select-menu-item {\n height: 48px;\n padding: 0 16px;\n line-height: 48px;\n cursor: pointer;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-select-menu-item:hover {\n background-color: #EEEEEE;\n}\n.mdui-select-menu-item:first-child {\n margin-top: 8px;\n}\n.mdui-select-menu-item:last-child {\n margin-bottom: 8px;\n}\n.mdui-select-menu-item[disabled] {\n color: rgba(0, 0, 0, 0.38) !important;\n cursor: default;\n}\n.mdui-select-menu-item[disabled]:hover {\n background-color: inherit !important;\n}\n.mdui-select-menu-item[selected] {\n color: #FF4081;\n}\n/* 原生 select 组件 */\nselect.mdui-select {\n background-color: transparent;\n}\nselect.mdui-select option {\n color: rgba(0, 0, 0, 0.87);\n}\nselect.mdui-select::-ms-expand {\n display: none;\n}\n/* 原生多选 select 组件 */\nselect.mdui-select[multiple] {\n height: auto;\n padding: 0;\n font-size: 15px;\n background-color: #FFF;\n background-image: none;\n border: 1px solid rgba(0, 0, 0, 0.38);\n cursor: default;\n}\nselect.mdui-select[multiple] optgroup {\n margin: 8px 0 0 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.38);\n}\nselect.mdui-select[multiple] optgroup:last-child {\n margin-bottom: 8px;\n}\nselect.mdui-select[multiple] optgroup:not(:first-child) {\n padding-top: 8px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n}\nselect.mdui-select[multiple] option {\n display: flex;\n align-items: center;\n height: 32px;\n margin: 0 0 0 -16px;\n padding: 0 16px;\n color: rgba(0, 0, 0, 0.87);\n}\nselect.mdui-select[multiple] option:first-child {\n margin-top: 8px;\n}\nselect.mdui-select[multiple] option:last-child {\n margin-bottom: 8px;\n}\n/**\n * =============================================================================\n * ************ Select 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-select-menu-item[selected] {\n color: #FFC107;\n}\n.mdui-theme-accent-blue .mdui-select-menu-item[selected] {\n color: #2196F3;\n}\n.mdui-theme-accent-cyan .mdui-select-menu-item[selected] {\n color: #00BCD4;\n}\n.mdui-theme-accent-deep-orange .mdui-select-menu-item[selected] {\n color: #FF5722;\n}\n.mdui-theme-accent-deep-purple .mdui-select-menu-item[selected] {\n color: #673AB7;\n}\n.mdui-theme-accent-green .mdui-select-menu-item[selected] {\n color: #4CAF50;\n}\n.mdui-theme-accent-indigo .mdui-select-menu-item[selected] {\n color: #3F51B5;\n}\n.mdui-theme-accent-light-blue .mdui-select-menu-item[selected] {\n color: #03A9F4;\n}\n.mdui-theme-accent-light-green .mdui-select-menu-item[selected] {\n color: #8BC34A;\n}\n.mdui-theme-accent-lime .mdui-select-menu-item[selected] {\n color: #CDDC39;\n}\n.mdui-theme-accent-orange .mdui-select-menu-item[selected] {\n color: #FF9800;\n}\n.mdui-theme-accent-pink .mdui-select-menu-item[selected] {\n color: #E91E63;\n}\n.mdui-theme-accent-purple .mdui-select-menu-item[selected] {\n color: #9C27B0;\n}\n.mdui-theme-accent-red .mdui-select-menu-item[selected] {\n color: #F44336;\n}\n.mdui-theme-accent-teal .mdui-select-menu-item[selected] {\n color: #009688;\n}\n.mdui-theme-accent-yellow .mdui-select-menu-item[selected] {\n color: #FFEB3B;\n}\n/**\n * =============================================================================\n * ************ Select dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-select {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' fill='%23FFF'/%3E%3C/svg%3E\");\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-select-position-top {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' fill='%23FFF'/%3E%3C/svg%3E\");\n}\n.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top,\n.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom {\n background-color: #424242;\n}\n.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom {\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-select-menu {\n color: #fff;\n background-color: #424242;\n}\n.mdui-theme-layout-dark .mdui-select-menu-item:hover {\n background-color: #616161;\n}\n.mdui-theme-layout-dark .mdui-select-menu-item[disabled] {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.mdui-theme-layout-dark select.mdui-select {\n color: #FFF;\n background-color: #303030;\n}\n.mdui-theme-layout-dark select.mdui-select option {\n color: #FFF;\n background-color: #303030;\n}\n.mdui-theme-layout-dark select.mdui-select[multiple] {\n border: 1px solid rgba(255, 255, 255, 0.5);\n}\n.mdui-theme-layout-dark select.mdui-select[multiple] optgroup {\n color: rgba(255, 255, 255, 0.5);\n}\n.mdui-theme-layout-dark select.mdui-select[multiple] optgroup:not(:first-child) {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-select {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' fill='%23FFF'/%3E%3C/svg%3E\");\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-select-position-top {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' fill='%23FFF'/%3E%3C/svg%3E\");\n }\n .mdui-theme-layout-auto .mdui-select-open.mdui-select-position-top,\n .mdui-theme-layout-auto .mdui-select-open.mdui-select-position-bottom {\n background-color: #424242;\n }\n .mdui-theme-layout-auto .mdui-select-open.mdui-select-position-top {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-select-open.mdui-select-position-bottom {\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-select-menu {\n color: #fff;\n background-color: #424242;\n }\n .mdui-theme-layout-auto .mdui-select-menu-item:hover {\n background-color: #616161;\n }\n .mdui-theme-layout-auto .mdui-select-menu-item[disabled] {\n color: rgba(255, 255, 255, 0.5) !important;\n }\n .mdui-theme-layout-auto select.mdui-select {\n color: #FFF;\n background-color: #303030;\n }\n .mdui-theme-layout-auto select.mdui-select option {\n color: #FFF;\n background-color: #303030;\n }\n .mdui-theme-layout-auto select.mdui-select[multiple] {\n border: 1px solid rgba(255, 255, 255, 0.5);\n }\n .mdui-theme-layout-auto select.mdui-select[multiple] optgroup {\n color: rgba(255, 255, 255, 0.5);\n }\n .mdui-theme-layout-auto select.mdui-select[multiple] optgroup:not(:first-child) {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n }\n}\n/**\n * =============================================================================\n * ************ Toolbar 工具栏 ************\n * =============================================================================\n */\n.mdui-toolbar {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n}\n.mdui-toolbar > * {\n margin: 0 16px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-toolbar[class*=\"mdui-color-\"]:not(.mdui-color-transparent) .mdui-btn:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mdui-toolbar[class*=\"mdui-color-\"]:not(.mdui-color-transparent) .mdui-btn:active {\n background-color: rgba(255, 255, 255, 0.165);\n}\n.mdui-toolbar > a {\n color: inherit;\n text-decoration: none;\n user-select: none;\n}\n.mdui-toolbar > .mdui-btn-icon {\n width: 48px;\n min-width: 48px;\n height: 48px;\n}\n@media (orientation: landscape) and (max-width: 959px) {\n .mdui-toolbar > .mdui-btn-icon {\n width: 40px;\n min-width: 40px;\n height: 40px;\n }\n}\n.mdui-toolbar > .mdui-btn-icon .mdui-icon {\n height: 24px;\n line-height: 24px;\n}\n.mdui-toolbar .mdui-icon {\n color: inherit;\n}\n.mdui-toolbar-spacer {\n flex-grow: 1;\n margin: 0;\n}\n/* 手机 */\n.mdui-toolbar {\n height: 56px;\n line-height: 56px;\n}\n.mdui-toolbar > .mdui-btn {\n margin: 0 4px;\n}\n.mdui-toolbar > .mdui-btn + .mdui-btn {\n margin-left: 0;\n}\n@media (min-width: 600px) {\n .mdui-appbar .mdui-toolbar {\n height: 64px;\n line-height: 64px;\n }\n .mdui-appbar .mdui-toolbar > .mdui-btn {\n margin: 0 8px;\n }\n .mdui-appbar .mdui-toolbar > .mdui-btn + .mdui-btn {\n margin-left: 0;\n }\n}\n@media (orientation: landscape) and (max-width: 959px) {\n .mdui-appbar .mdui-toolbar {\n height: 48px;\n line-height: 48px;\n }\n .mdui-appbar .mdui-toolbar > .mdui-btn {\n margin: 0 4px;\n }\n .mdui-appbar .mdui-toolbar > .mdui-btn + .mdui-btn {\n margin-left: 0;\n }\n}\n/**\n * =============================================================================\n * ************ Appbar 应用栏 ************\n * =============================================================================\n */\n.mdui-appbar {\n z-index: 1000;\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n/* appbar 固定在顶部 */\n.mdui-appbar-fixed {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 0.3s;\n transition-property: left, right;\n will-change: left, right;\n}\n/* 左侧留出抽屉栏的距离 */\n@media (min-width: 1024px) {\n .mdui-drawer-body-left .mdui-appbar-inset.mdui-appbar-fixed {\n left: 240px;\n }\n}\n@media (min-width: 1024px) {\n .mdui-drawer-body-right .mdui-appbar-inset.mdui-appbar-fixed {\n right: 240px;\n }\n}\n/* 含工具栏 */\n.mdui-appbar-with-toolbar {\n padding-top: 56px;\n}\n@media (min-width: 600px) {\n .mdui-appbar-with-toolbar {\n padding-top: 64px;\n }\n}\n@media (orientation: landscape) and (max-width: 959px) {\n .mdui-appbar-with-toolbar {\n padding-top: 48px;\n }\n}\n/* 含 Tab */\n.mdui-appbar-with-tab {\n padding-top: 48px;\n}\n/* 含大 Tab */\n.mdui-appbar-with-tab-larger {\n padding-top: 72px;\n}\n/* 含工具栏和 Tab */\n.mdui-appbar-with-toolbar.mdui-appbar-with-tab {\n padding-top: 104px;\n}\n@media (min-width: 600px) {\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab {\n padding-top: 112px;\n }\n}\n@media (orientation: landscape) and (max-width: 959px) {\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab {\n padding-top: 96px;\n }\n}\n/* 含工具栏和大 Tab */\n.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger {\n padding-top: 128px;\n}\n@media (min-width: 600px) {\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger {\n padding-top: 136px;\n }\n}\n@media (orientation: landscape) and (max-width: 959px) {\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger {\n padding-top: 120px;\n }\n}\n/**\n * =============================================================================\n * ************ Appbar dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-appbar > [class*=\"mdui-color-\"]:not(.mdui-color-transparent) {\n color: #fff !important;\n background-color: #212121 !important;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-appbar > [class*=\"mdui-color-\"]:not(.mdui-color-transparent) {\n color: #fff !important;\n background-color: #212121 !important;\n }\n}\n/**\n * =============================================================================\n * ************ Card 卡片 ************\n * =============================================================================\n */\n/* 卡片 */\n.mdui-card {\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n color: #000;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n/**\n * ===================== 头部,包含头像、标题、副标题\n */\n.mdui-card-header {\n position: relative;\n box-sizing: border-box;\n height: 72px;\n padding: 16px;\n}\n/* 卡片头部头像 */\n.mdui-card-header-avatar {\n float: left;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n}\n/* 卡片头部标题 */\n.mdui-card-header-title {\n display: block;\n margin-left: 52px;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n opacity: 0.87;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n/* 卡片头部副标题 */\n.mdui-card-header-subtitle {\n display: block;\n margin-left: 52px;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n opacity: 0.54;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n/**\n * =========================== 主标题区域\n */\n.mdui-card-primary {\n position: relative;\n padding: 24px 16px 16px 16px;\n}\n/* 主标题区域标题 */\n.mdui-card-primary-title {\n display: block;\n font-size: 24px;\n line-height: 36px;\n opacity: 0.87;\n}\n/* 主标题区域副标题 */\n.mdui-card-primary-subtitle {\n display: block;\n font-size: 14px;\n line-height: 24px;\n opacity: 0.54;\n}\n/**\n * ============================ 内容区域\n */\n.mdui-card-content {\n position: relative;\n padding: 16px;\n font-size: 14px;\n line-height: 24px;\n}\n/**\n * ============================ 卡片菜单\n */\n.mdui-card-menu {\n position: absolute;\n top: 16px;\n right: 16px;\n z-index: 1;\n}\n.mdui-card-menu .mdui-btn {\n margin-left: 8px;\n}\n/**\n * =========================== 按钮区域\n */\n.mdui-card-actions {\n position: relative;\n box-sizing: border-box;\n padding: 8px;\n}\n.mdui-card-actions::before,\n.mdui-card-actions::after {\n display: table;\n content: ' ';\n}\n.mdui-card-actions::after {\n clear: both;\n}\n.mdui-card-actions::before,\n.mdui-card-actions::after {\n display: table;\n content: ' ';\n}\n.mdui-card-actions::after {\n clear: both;\n}\n.mdui-card-actions .mdui-btn {\n max-width: 100%;\n margin: 0 8px 0 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-card-actions .mdui-btn-icon {\n width: 36px;\n height: 36px;\n margin: 0 8px;\n}\n/* 使按钮竖向排列 */\n.mdui-card-actions-stacked .mdui-btn {\n display: block;\n margin: 0 0 4px 0;\n}\n.mdui-card-actions-stacked .mdui-btn:last-child {\n margin: 0;\n}\n/**\n * ============================= 媒体元素区域\n */\n.mdui-card-media {\n position: relative;\n}\n.mdui-card-media img,\n.mdui-card-media video {\n display: block;\n width: 100%;\n}\n/* 覆盖在媒体元素上的内容 */\n.mdui-card-media-covered {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n color: #fff;\n background: rgba(0, 0, 0, 0.2);\n /* 覆盖在媒体元素上的标题 */\n}\n.mdui-card-media-covered .mdui-card-primary-title {\n opacity: 1;\n}\n.mdui-card-media-covered .mdui-card-primary-subtitle {\n opacity: 0.7;\n}\n/* 覆盖在媒体元素顶部 */\n.mdui-card-media-covered-top {\n top: 0;\n bottom: auto;\n}\n/* 覆盖层透明 */\n.mdui-card-media-covered-transparent {\n background: transparent;\n}\n/* 覆盖层渐变 */\n.mdui-card-media-covered-gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n}\n.mdui-card-media-covered-gradient.mdui-card-media-covered-top {\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n}\n/**\n * =============================================================================\n * ************ Card dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-card {\n color: #fff;\n background-color: #424242;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-card {\n color: #fff;\n background-color: #424242;\n }\n}\n/**\n * =============================================================================\n * ************ Tab ************\n * =============================================================================\n *\n * 在手机上选项卡始终平分或可滚动,在平板以上的设备上默认左对齐,可以选择居中对齐,或全宽等分\n */\n/* 选项卡,默认的选项卡为全宽 */\n.mdui-tab {\n position: relative;\n display: flex;\n min-height: 48px;\n max-height: 72px;\n margin: 0 auto;\n padding: 0;\n overflow-x: auto;\n overflow-y: hidden;\n white-space: nowrap;\n -webkit-overflow-scrolling: touch;\n}\n.mdui-tab a {\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 72px;\n min-height: 48px;\n max-height: 72px;\n padding: 12px;\n overflow: hidden;\n color: inherit;\n font-size: 14px;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n text-overflow: ellipsis;\n outline: none;\n cursor: pointer;\n opacity: 0.7;\n user-select: none;\n}\n.mdui-tab a .mdui-icon {\n opacity: 0.7;\n}\n@media (min-width: 600px) {\n .mdui-tab a {\n flex: none;\n min-width: 99px;\n max-width: 264px;\n padding: 12px 24px;\n }\n}\n@media (min-width: 1024px) {\n .mdui-tab a {\n min-width: 112px;\n }\n}\n@media (min-width: 1440px) {\n .mdui-tab a {\n min-width: 136px;\n }\n}\n@media (min-width: 1920px) {\n .mdui-tab a {\n min-width: 160px;\n }\n}\n.mdui-tab a label {\n display: block;\n width: 100%;\n cursor: pointer;\n}\n.mdui-tab a .mdui-icon + label {\n margin-top: 8px;\n}\n.mdui-tab a[disabled] {\n cursor: default;\n opacity: 0.38;\n}\n.mdui-tab a[disabled] label {\n cursor: default;\n}\n.mdui-tab .mdui-tab-active {\n color: #3F51B5;\n opacity: 1;\n}\n.mdui-tab .mdui-tab-active .mdui-icon {\n opacity: 1;\n}\n/* 选项卡居中 */\n@media (min-width: 600px) {\n .mdui-tab-centered::before {\n flex-grow: 1;\n content: ' ';\n }\n .mdui-tab-centered::after {\n flex-grow: 1;\n content: ' ';\n }\n .mdui-tab-centered a {\n flex: none;\n }\n}\n/* 选项卡始终全宽等分 */\n.mdui-tab-full-width a {\n flex: 1;\n max-width: none;\n}\n/* 可横向滚动的选项卡 */\n.mdui-tab-scrollable {\n padding-left: 56px;\n}\n.mdui-tab-scrollable a {\n flex: none;\n}\n@media (max-width: 599px) {\n .mdui-tab-scrollable {\n padding-left: 60px;\n }\n}\n/* 下划线指示器 */\n.mdui-tab-indicator {\n position: absolute;\n bottom: 0;\n height: 2px;\n background-color: #3F51B5;\n transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: left, width;\n}\n/**\n * =============================================================================\n * ************ Tab 主色 ************\n * =============================================================================\n */\n.mdui-theme-primary-amber .mdui-tab .mdui-tab-active {\n color: #FFC107;\n}\n.mdui-theme-primary-amber .mdui-tab-indicator {\n background-color: #FFC107;\n}\n.mdui-theme-primary-blue .mdui-tab .mdui-tab-active {\n color: #2196F3;\n}\n.mdui-theme-primary-blue .mdui-tab-indicator {\n background-color: #2196F3;\n}\n.mdui-theme-primary-blue-grey .mdui-tab .mdui-tab-active {\n color: #607D8B;\n}\n.mdui-theme-primary-blue-grey .mdui-tab-indicator {\n background-color: #607D8B;\n}\n.mdui-theme-primary-brown .mdui-tab .mdui-tab-active {\n color: #795548;\n}\n.mdui-theme-primary-brown .mdui-tab-indicator {\n background-color: #795548;\n}\n.mdui-theme-primary-cyan .mdui-tab .mdui-tab-active {\n color: #00BCD4;\n}\n.mdui-theme-primary-cyan .mdui-tab-indicator {\n background-color: #00BCD4;\n}\n.mdui-theme-primary-deep-orange .mdui-tab .mdui-tab-active {\n color: #FF5722;\n}\n.mdui-theme-primary-deep-orange .mdui-tab-indicator {\n background-color: #FF5722;\n}\n.mdui-theme-primary-deep-purple .mdui-tab .mdui-tab-active {\n color: #673AB7;\n}\n.mdui-theme-primary-deep-purple .mdui-tab-indicator {\n background-color: #673AB7;\n}\n.mdui-theme-primary-green .mdui-tab .mdui-tab-active {\n color: #4CAF50;\n}\n.mdui-theme-primary-green .mdui-tab-indicator {\n background-color: #4CAF50;\n}\n.mdui-theme-primary-grey .mdui-tab .mdui-tab-active {\n color: #9E9E9E;\n}\n.mdui-theme-primary-grey .mdui-tab-indicator {\n background-color: #9E9E9E;\n}\n.mdui-theme-primary-indigo .mdui-tab .mdui-tab-active {\n color: #3F51B5;\n}\n.mdui-theme-primary-indigo .mdui-tab-indicator {\n background-color: #3F51B5;\n}\n.mdui-theme-primary-light-blue .mdui-tab .mdui-tab-active {\n color: #03A9F4;\n}\n.mdui-theme-primary-light-blue .mdui-tab-indicator {\n background-color: #03A9F4;\n}\n.mdui-theme-primary-light-green .mdui-tab .mdui-tab-active {\n color: #8BC34A;\n}\n.mdui-theme-primary-light-green .mdui-tab-indicator {\n background-color: #8BC34A;\n}\n.mdui-theme-primary-lime .mdui-tab .mdui-tab-active {\n color: #CDDC39;\n}\n.mdui-theme-primary-lime .mdui-tab-indicator {\n background-color: #CDDC39;\n}\n.mdui-theme-primary-orange .mdui-tab .mdui-tab-active {\n color: #FF9800;\n}\n.mdui-theme-primary-orange .mdui-tab-indicator {\n background-color: #FF9800;\n}\n.mdui-theme-primary-pink .mdui-tab .mdui-tab-active {\n color: #E91E63;\n}\n.mdui-theme-primary-pink .mdui-tab-indicator {\n background-color: #E91E63;\n}\n.mdui-theme-primary-purple .mdui-tab .mdui-tab-active {\n color: #9C27B0;\n}\n.mdui-theme-primary-purple .mdui-tab-indicator {\n background-color: #9C27B0;\n}\n.mdui-theme-primary-red .mdui-tab .mdui-tab-active {\n color: #F44336;\n}\n.mdui-theme-primary-red .mdui-tab-indicator {\n background-color: #F44336;\n}\n.mdui-theme-primary-teal .mdui-tab .mdui-tab-active {\n color: #009688;\n}\n.mdui-theme-primary-teal .mdui-tab-indicator {\n background-color: #009688;\n}\n.mdui-theme-primary-yellow .mdui-tab .mdui-tab-active {\n color: #FFEB3B;\n}\n.mdui-theme-primary-yellow .mdui-tab-indicator {\n background-color: #FFEB3B;\n}\n/* 带背景色的选项卡 */\n.mdui-tab[class*=\"mdui-color-\"]:not(.mdui-color-white) .mdui-tab-active {\n color: inherit;\n}\n.mdui-tab[class*=\"mdui-color-\"]:not(.mdui-color-white) .mdui-tab-indicator {\n background-color: #FFFFFF;\n}\n.mdui-tab[class*=\"mdui-color-\"]:not(.mdui-color-white)::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: transparent;\n}\n@media (min-width: 1024px) {\n .mdui-tab[class*=\"mdui-color-\"]:not(.mdui-color-white)::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n}\n.mdui-tab[class*=\"mdui-color-\"]:not(.mdui-color-white)::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n}\n/**\n * =============================================================================\n * ************ Subheader 副标题 ************\n * =============================================================================\n *\n * 用于 List 和 Grid list 组件\n */\n.mdui-subheader,\n.mdui-subheader-inset {\n position: relative;\n box-sizing: border-box;\n height: 48px;\n padding-right: 16px;\n padding-left: 16px;\n color: rgba(0, 0, 0, 0.54);\n font-weight: 500;\n font-size: 14px;\n line-height: 48px;\n cursor: default;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-subheader-inset {\n padding-left: 72px;\n}\n/**\n * =============================================================================\n * ************ Subheader dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-subheader,\n.mdui-theme-layout-dark .mdui-subheader-inset {\n color: rgba(255, 255, 255, 0.7);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-subheader,\n .mdui-theme-layout-auto .mdui-subheader-inset {\n color: rgba(255, 255, 255, 0.7);\n }\n}\n/**\n * =============================================================================\n * ************ Grid List 网格列表 ************\n * =============================================================================\n */\n/* 调整网格边距 */\n.mdui-grid-list {\n margin: 0 -2px;\n}\n.mdui-grid-list .mdui-col,\n.mdui-grid-list [class*=\"mdui-col-xs-\"],\n.mdui-grid-list [class*=\"mdui-col-sm-\"],\n.mdui-grid-list [class*=\"mdui-col-md-\"],\n.mdui-grid-list [class*=\"mdui-col-lg-\"],\n.mdui-grid-list [class*=\"mdui-col-xl-\"] {\n padding-right: 2px;\n padding-left: 2px;\n}\n/* 单元格 */\n.mdui-grid-tile {\n position: relative;\n box-sizing: border-box;\n margin-bottom: 4px;\n overflow: hidden;\n}\n.mdui-grid-tile img {\n display: block;\n width: 100%;\n}\n/* 操作栏 */\n.mdui-grid-tile-actions {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n min-height: 48px;\n max-height: 68px;\n padding: 16px;\n color: #fff;\n background: rgba(0, 0, 0, 0.2);\n}\n.mdui-grid-tile-actions .mdui-icon {\n color: #fff;\n}\n/* 操作栏内的文本 */\n.mdui-grid-tile-text {\n flex: 1;\n overflow: hidden;\n}\n/* 标题 */\n.mdui-grid-tile-title {\n height: 16px;\n font-size: 16px;\n line-height: 16px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-grid-tile-title .mdui-icon {\n margin-right: 8px;\n}\n/* 副标题 */\n.mdui-grid-tile-subtitle {\n height: 18px;\n margin-top: 4px;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-grid-tile-subtitle .mdui-icon {\n margin-right: 8px;\n font-size: 18px;\n}\n/* 操作栏内的按钮 */\n.mdui-grid-tile-buttons {\n flex: none;\n margin: -8px;\n white-space: nowrap;\n}\n.mdui-grid-tile-buttons .mdui-btn {\n margin-left: 8px;\n}\n.mdui-grid-tile-buttons .mdui-btn:first-child {\n margin-left: 0;\n}\n.mdui-grid-tile-text + .mdui-grid-tile-buttons {\n margin-left: 8px;\n}\n.mdui-grid-tile-buttons + .mdui-grid-tile-text {\n margin-left: 16px;\n}\n/* 操作栏位于顶部 */\n.mdui-grid-tile-actions-top {\n top: 0;\n bottom: auto;\n}\n/* 操作栏背景透明 */\n.mdui-grid-tile-actions-transparent {\n background: transparent;\n}\n/* 操作栏背景渐变 */\n.mdui-grid-tile-actions-gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n}\n.mdui-grid-tile-actions-gradient.mdui-grid-tile-actions-top {\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n}\n/**\n * =============================================================================\n * ************ List 列表 ************\n * =============================================================================\n */\n/* 列表 */\n.mdui-list {\n margin: 0;\n padding: 8px 0;\n list-style: none;\n background-color: transparent;\n}\n.mdui-list .mdui-list {\n padding: 0;\n}\n.mdui-list > .mdui-divider,\n.mdui-list > .mdui-divider-light,\n.mdui-list > .mdui-divider-dark,\n.mdui-list > .mdui-divider-inset,\n.mdui-list > .mdui-divider-inset-light,\n.mdui-list > .mdui-divider-inset-dark {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.mdui-list a {\n color: inherit;\n text-decoration: none;\n}\n.mdui-list .mdui-subheader,\n.mdui-list .mdui-subheader-inset {\n margin-top: 8px;\n}\n.mdui-list .mdui-subheader::before,\n.mdui-list .mdui-subheader-inset::before {\n position: absolute;\n right: 0;\n left: 0;\n display: block;\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n content: ' ';\n}\n.mdui-list .mdui-subheader:first-child,\n.mdui-list .mdui-subheader-inset:first-child {\n margin-top: -8px;\n}\n.mdui-list .mdui-subheader:first-child::before,\n.mdui-list .mdui-subheader-inset:first-child::before {\n background-color: transparent;\n}\n.mdui-list .mdui-subheader-inset::before {\n left: 72px;\n}\n/* 列表项 */\n.mdui-list-item {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n min-height: 48px;\n padding: 0 16px;\n text-decoration: none;\n cursor: pointer;\n transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mdui-list-item:hover {\n background-color: rgba(0, 0, 0, 0.08);\n}\n.mdui-list-item::after {\n height: 48px;\n visibility: hidden;\n content: ' ';\n}\n/* 列表项图标 */\n.mdui-list-item-icon {\n width: 24px;\n min-width: 24px;\n height: 24px;\n color: rgba(0, 0, 0, 0.54);\n}\n/* 列表项头像 */\n.mdui-list-item-avatar {\n min-width: 40px;\n max-width: 40px;\n height: 40px;\n margin-top: 8px;\n margin-bottom: 8px;\n color: #FFFFFF;\n line-height: 40px;\n text-align: center;\n background-color: #BDBDBD;\n border-radius: 50%;\n}\n.mdui-list-item-avatar img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n}\n/* 列表项内容 */\n.mdui-list-item-content {\n flex-grow: 1;\n padding-top: 14px;\n padding-bottom: 14px;\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n}\n/* 列表项内容的副内容 */\n.mdui-list-item-text {\n font-size: 14px;\n opacity: 0.54;\n}\n.mdui-list-item-title ~ .mdui-list-item-text {\n margin-top: 4px;\n}\n/* 激活状态的列表项 */\n.mdui-list-item-active {\n font-weight: 700;\n background-color: rgba(0, 0, 0, 0.08);\n}\n.mdui-list-item-active .mdui-list-item-content {\n font-weight: 700;\n}\n.mdui-list-item-active .mdui-list-item-text {\n font-weight: 400;\n}\n/* 限制文本高度 */\n.mdui-list-item-one-line,\n.mdui-list-item-two-line,\n.mdui-list-item-three-line {\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-box-orient: vertical;\n}\n.mdui-list-item-one-line {\n -webkit-line-clamp: 1;\n height: 20px;\n}\n.mdui-list-item-two-line {\n -webkit-line-clamp: 2;\n height: 40px;\n}\n.mdui-list-item-three-line {\n -webkit-line-clamp: 3;\n height: 60px;\n}\n/* 列表项内的元素间添加间距 */\n.mdui-list-item-icon ~ .mdui-list-item-content {\n margin-left: 32px;\n}\n.mdui-checkbox ~ .mdui-list-item-content,\n.mdui-radio ~ .mdui-list-item-content,\n.mdui-switch ~ .mdui-list-item-content {\n margin-left: 20px;\n}\n.mdui-list-item-avatar ~ .mdui-list-item-content {\n margin-left: 16px;\n}\n.mdui-list-item-content ~ .mdui-list-item-icon,\n.mdui-list-item-content ~ .mdui-list-item-avatar,\n.mdui-list-item-content ~ .mdui-checkbox,\n.mdui-list-item-content ~ .mdui-radio,\n.mdui-list-item-content ~ .mdui-switch {\n margin-left: 16px;\n}\n.mdui-list-item-content ~ .mdui-checkbox,\n.mdui-list-item-content ~ .mdui-radio {\n padding-left: 24px;\n}\n/* 密集型列表 */\n.mdui-list-dense {\n padding: 4px 0;\n font-size: 13px;\n}\n.mdui-list-dense > .mdui-divider,\n.mdui-list-dense > .mdui-divider-light,\n.mdui-list-dense > .mdui-divider-dark,\n.mdui-list-dense > .mdui-divider-inset,\n.mdui-list-dense > .mdui-divider-inset-light,\n.mdui-list-dense > .mdui-divider-inset-dark {\n margin-top: 4px;\n margin-bottom: 4px;\n}\n.mdui-list-dense .mdui-subheader,\n.mdui-list-dense .mdui-subheader-inset {\n height: 40px;\n margin-top: 4px;\n font-size: 12px;\n line-height: 40px;\n}\n.mdui-list-dense .mdui-subheader:first-child,\n.mdui-list-dense .mdui-subheader-inset:first-child {\n margin-top: -4px;\n}\n.mdui-list-dense .mdui-list-item {\n min-height: 40px;\n}\n.mdui-list-dense .mdui-list-item::after {\n height: 40px;\n}\n.mdui-list-dense .mdui-list-item-icon {\n width: 20px;\n height: 20px;\n font-size: 20px;\n}\n.mdui-list-dense .mdui-list-item-avatar {\n width: 36px;\n min-width: 36px;\n height: 36px;\n min-height: 36px;\n}\n.mdui-list-dense .mdui-list-item-content {\n padding-top: 11px;\n padding-bottom: 11px;\n font-size: 13px;\n line-height: 18px;\n}\n.mdui-list-dense .mdui-list-item-text {\n font-size: 13px;\n}\n.mdui-list-dense .mdui-list-item-title ~ .mdui-list-item-text {\n margin-top: 2px;\n}\n.mdui-list-dense .mdui-list-item-one-line {\n height: 18px;\n}\n.mdui-list-dense .mdui-list-item-two-line {\n height: 36px;\n}\n.mdui-list-dense .mdui-list-item-three-line {\n height: 54px;\n}\n/**\n * =============================================================================\n * ************ List dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-list .mdui-subheader::before,\n.mdui-theme-layout-dark .mdui-list .mdui-subheader-inset::before {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.mdui-theme-layout-dark .mdui-list .mdui-subheader:first-child::before,\n.mdui-theme-layout-dark .mdui-list .mdui-subheader-inset:first-child::before {\n background-color: transparent;\n}\n.mdui-theme-layout-dark .mdui-list-item {\n color: #ffffff;\n}\n.mdui-theme-layout-dark .mdui-list-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n.mdui-theme-layout-dark .mdui-list-item-icon {\n color: #ffffff;\n}\n.mdui-theme-layout-dark .mdui-list-item-text {\n opacity: 0.7;\n}\n.mdui-theme-layout-dark .mdui-list-item-active {\n background-color: rgba(255, 255, 255, 0.08);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-list .mdui-subheader::before,\n .mdui-theme-layout-auto .mdui-list .mdui-subheader-inset::before {\n background-color: rgba(255, 255, 255, 0.12);\n }\n .mdui-theme-layout-auto .mdui-list .mdui-subheader:first-child::before,\n .mdui-theme-layout-auto .mdui-list .mdui-subheader-inset:first-child::before {\n background-color: transparent;\n }\n .mdui-theme-layout-auto .mdui-list-item {\n color: #ffffff;\n }\n .mdui-theme-layout-auto .mdui-list-item:hover {\n background-color: rgba(255, 255, 255, 0.08);\n }\n .mdui-theme-layout-auto .mdui-list-item-icon {\n color: #ffffff;\n }\n .mdui-theme-layout-auto .mdui-list-item-text {\n opacity: 0.7;\n }\n .mdui-theme-layout-auto .mdui-list-item-active {\n background-color: rgba(255, 255, 255, 0.08);\n }\n}\n/**\n * ==============================================================================\n * ************ List inner theme ************\n * ==============================================================================\n */\n[class*=\"mdui-color-\"] .mdui-list-item {\n color: inherit;\n}\n[class*=\"mdui-color-\"] .mdui-list-item-icon {\n color: inherit;\n}\n/**\n * =============================================================================\n * ************ Drawer 抽屉栏导航 ************\n * =============================================================================\n */\n/* DOM 加载完后再添加 transition */\nbody.mdui-loaded {\n transition: padding 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\nbody.mdui-loaded .mdui-drawer {\n transition: all 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n/* 抽屉栏外层,默认出现在左侧且隐藏 */\n.mdui-drawer {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n z-index: 5000;\n box-sizing: border-box;\n /* stylelint-disable-next-line */\n width: calc(100% - 56px);\n max-width: 280px;\n margin: 0;\n overflow-x: hidden;\n overflow-y: auto;\n white-space: nowrap;\n will-change: transform;\n -webkit-overflow-scrolling: touch;\n}\n@media (max-width: 1023px) {\n .mdui-drawer:not(.mdui-drawer-open) {\n box-shadow: none !important;\n }\n}\n@media (min-width: 600px) {\n .mdui-drawer {\n /* stylelint-disable-next-line */\n width: calc(100% - 64px);\n max-width: 320px;\n }\n}\n@media (min-width: 1024px) {\n .mdui-drawer {\n width: 240px;\n max-width: none;\n }\n .mdui-drawer.mdui-drawer-close {\n box-shadow: none !important;\n }\n}\n/* 出现在右侧的抽屉栏 */\n.mdui-drawer-right {\n right: 0;\n left: auto;\n}\n/* 平板上的样式 */\n@media (max-width: 1023px) {\n .mdui-drawer {\n /* 始终有背景和阴影 */\n background-color: #fff;\n /* 默认隐藏 */\n transform: translateX(-330px);\n box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.2), 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12);\n }\n .mdui-drawer-right {\n /* 右侧 drawer 也默认隐藏 */\n transform: translateX(330px);\n }\n}\n/* 手机上的样式 */\n@media (max-width: 599px) {\n .mdui-drawer {\n transform: translateX(-290px);\n }\n .mdui-drawer-right {\n transform: translateX(290px);\n }\n}\n/* 强制隐藏抽屉栏 */\n.mdui-drawer-close {\n transform: translateX(-290px);\n}\n.mdui-drawer-close.mdui-drawer-right {\n transform: translateX(290px);\n}\n@media (min-width: 600px) {\n .mdui-drawer-close {\n transform: translateX(-330px);\n }\n .mdui-drawer-close.mdui-drawer-right {\n transform: translateX(330px);\n }\n}\n@media (min-width: 1024px) {\n .mdui-drawer-close {\n transform: translateX(-250px);\n }\n .mdui-drawer-close.mdui-drawer-right {\n transform: translateX(250px);\n }\n}\n/* 强制显示抽屉栏 */\n.mdui-drawer-open {\n transform: translateX(0) !important;\n}\n/* PC 上的样式 */\n@media (min-width: 1024px) {\n /* 使该类所在元素获得 padding-left 或 padding-right,避免被抽屉栏覆盖住页面 */\n .mdui-drawer-body-left {\n padding-left: 240px;\n }\n .mdui-drawer-body-right {\n padding-right: 240px;\n }\n /* PC 上默认有上边距 */\n .mdui-appbar-with-toolbar .mdui-drawer {\n top: 64px;\n }\n .mdui-appbar-with-tab .mdui-drawer {\n top: 48px;\n }\n .mdui-appbar-with-tab-larger .mdui-drawer {\n top: 72px;\n }\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab .mdui-drawer {\n top: 112px;\n }\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger .mdui-drawer {\n top: 136px;\n }\n}\n/* 抽屉栏不是透明时添加阴影 */\n.mdui-drawer[class*=\"mdui-color-\"]:not(.mdui-color-transparent) {\n box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.2), 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12);\n}\n/* 抽屉栏 100% 高度,覆盖在导航栏上面 */\n.mdui-drawer-full-height {\n top: 0 !important;\n}\n/**\n * =============================================================================\n * ************ Drawer dark ************\n * =============================================================================\n */\n@media (max-width: 1023px) {\n .mdui-theme-layout-dark .mdui-drawer {\n background-color: #424242;\n }\n}\n@media (prefers-color-scheme: dark) and (max-width: 1023px) {\n .mdui-theme-layout-auto .mdui-drawer {\n background-color: #424242;\n }\n}\n/**\n * =============================================================================\n * ************ Dialog 提示框 ************\n * =============================================================================\n */\n.mdui-dialog {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 6000;\n display: none;\n box-sizing: border-box;\n width: 92%;\n min-width: 180px;\n max-width: 728px;\n max-height: 90%;\n margin: auto;\n overflow: hidden;\n color: #000;\n background-color: #fff;\n border-radius: 2px;\n transform: scale(0.95);\n opacity: 0;\n transition-duration: 0.3s;\n transition-property: transform, opacity, visibility;\n will-change: top, opacity, transform;\n box-shadow: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);\n}\n@media (min-width: 600px) {\n .mdui-dialog {\n width: 85%;\n max-height: 85%;\n }\n}\n@media (min-width: 1024px) {\n .mdui-dialog {\n width: 80%;\n max-height: 80%;\n }\n}\n/* 打开提示框 */\n.mdui-dialog-open {\n transform: scale(1);\n opacity: 1;\n}\n/* 提示框标题 */\n.mdui-dialog-title {\n box-sizing: border-box;\n font-weight: 500;\n font-size: 20px;\n line-height: 24px;\n text-align: left;\n}\n/* 标题固定在顶部 */\n.mdui-dialog > .mdui-dialog-title {\n padding: 24px 24px 20px 24px;\n}\n/* 提示框内容 */\n.mdui-dialog-content {\n box-sizing: border-box;\n padding: 24px;\n overflow-y: auto;\n color: rgba(0, 0, 0, 0.7);\n font-size: 15px;\n line-height: 1.5;\n -webkit-overflow-scrolling: touch;\n}\n/* 标题随内容滚动 */\n.mdui-dialog-content > .mdui-dialog-title {\n padding-bottom: 20px;\n}\n.mdui-dialog-title + .mdui-dialog-content {\n padding-top: 0;\n}\n/* 提示框底部按钮 */\n.mdui-dialog-actions {\n box-sizing: border-box;\n padding: 8px;\n text-align: right;\n}\n.mdui-dialog-actions .mdui-btn {\n min-width: 64px;\n margin-left: 8px;\n color: #E91E63;\n}\n.mdui-dialog-actions .mdui-btn:first-child {\n margin-left: 0;\n}\n/* 底部按钮滚随内容动 */\n.mdui-dialog-content > .mdui-dialog-actions {\n margin: 0 -24px -24px -24px;\n padding-top: 32px;\n}\n/* 使提示框底部按钮竖排 */\n.mdui-dialog-actions-stacked {\n padding: 8px 0 8px 0;\n}\n.mdui-dialog-actions-stacked .mdui-btn {\n width: 100%;\n height: 48px;\n margin: 0;\n line-height: 48px !important;\n text-align: right;\n border-radius: 0;\n}\n/**\n * =============================================================================\n * ************ Dialog 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-dialog-actions .mdui-btn {\n color: #FFC107;\n}\n.mdui-theme-accent-blue .mdui-dialog-actions .mdui-btn {\n color: #2196F3;\n}\n.mdui-theme-accent-cyan .mdui-dialog-actions .mdui-btn {\n color: #00BCD4;\n}\n.mdui-theme-accent-deep-orange .mdui-dialog-actions .mdui-btn {\n color: #FF5722;\n}\n.mdui-theme-accent-deep-purple .mdui-dialog-actions .mdui-btn {\n color: #673AB7;\n}\n.mdui-theme-accent-green .mdui-dialog-actions .mdui-btn {\n color: #4CAF50;\n}\n.mdui-theme-accent-indigo .mdui-dialog-actions .mdui-btn {\n color: #3F51B5;\n}\n.mdui-theme-accent-light-blue .mdui-dialog-actions .mdui-btn {\n color: #03A9F4;\n}\n.mdui-theme-accent-light-green .mdui-dialog-actions .mdui-btn {\n color: #8BC34A;\n}\n.mdui-theme-accent-lime .mdui-dialog-actions .mdui-btn {\n color: #CDDC39;\n}\n.mdui-theme-accent-orange .mdui-dialog-actions .mdui-btn {\n color: #FF9800;\n}\n.mdui-theme-accent-pink .mdui-dialog-actions .mdui-btn {\n color: #E91E63;\n}\n.mdui-theme-accent-purple .mdui-dialog-actions .mdui-btn {\n color: #9C27B0;\n}\n.mdui-theme-accent-red .mdui-dialog-actions .mdui-btn {\n color: #F44336;\n}\n.mdui-theme-accent-teal .mdui-dialog-actions .mdui-btn {\n color: #009688;\n}\n.mdui-theme-accent-yellow .mdui-dialog-actions .mdui-btn {\n color: #FFEB3B;\n}\n/**\n * =============================================================================\n * ************ Dialog dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-dialog {\n color: #fff;\n background-color: #424242;\n}\n.mdui-theme-layout-dark .mdui-dialog-content {\n color: rgba(255, 255, 255, 0.7);\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-dialog {\n color: #fff;\n background-color: #424242;\n }\n .mdui-theme-layout-auto .mdui-dialog-content {\n color: rgba(255, 255, 255, 0.7);\n }\n}\n/**\n * =============================================================================\n * ************ Dialog alert ************\n * =============================================================================\n */\n.mdui-dialog-alert {\n max-width: 448px;\n}\n/**\n * =============================================================================\n * ************ Dialog confirm ************\n * =============================================================================\n */\n.mdui-dialog-confirm {\n max-width: 448px;\n}\n/**\n * =============================================================================\n * ************ Dialog prompt ************\n * =============================================================================\n */\n.mdui-dialog-prompt {\n max-width: 448px;\n}\n.mdui-dialog-prompt .mdui-textfield {\n padding-top: 0;\n}\n/**\n * =============================================================================\n * ************ Tooltip 工具提示 ************\n * =============================================================================\n */\n.mdui-tooltip {\n position: absolute;\n z-index: 9000;\n display: inline-block;\n box-sizing: border-box;\n max-width: 180px;\n min-height: 32px;\n padding: 8px 16px;\n color: #fff;\n font-weight: 500;\n font-size: 14px;\n line-height: 22px;\n text-align: left;\n background-color: rgba(97, 97, 97, 0.9);\n border-radius: 2px;\n transform: scale(0);\n opacity: 0;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 0.15s;\n transition-property: opacity, transform;\n will-change: opacity, transform;\n}\n@media (min-width: 1024px) {\n .mdui-tooltip {\n max-width: 200px;\n min-height: 24px;\n padding: 4px 8px;\n font-size: 12px;\n line-height: 18px;\n }\n}\n/* 显示工具提示 */\n.mdui-tooltip-open {\n transform: scale(1);\n opacity: 1;\n}\n/**\n * =============================================================================\n * ************ Snackbar ************\n * =============================================================================\n */\n.mdui-snackbar {\n position: fixed;\n z-index: 7000;\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n min-height: 48px;\n padding: 0 24px 0 24px;\n color: #fff;\n font-size: 14px;\n line-height: 20px;\n background-color: #323232;\n will-change: transform;\n}\n@media (min-width: 600px) {\n .mdui-snackbar {\n width: auto;\n min-width: 288px;\n max-width: 568px;\n border-radius: 2px;\n }\n}\n.mdui-snackbar-bottom,\n.mdui-snackbar-top,\n.mdui-snackbar-left-top,\n.mdui-snackbar-left-bottom,\n.mdui-snackbar-right-top,\n.mdui-snackbar-right-bottom {\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n/* 位置 */\n.mdui-snackbar-bottom,\n.mdui-snackbar-left-bottom,\n.mdui-snackbar-right-bottom {\n bottom: 0;\n}\n.mdui-snackbar-top,\n.mdui-snackbar-left-top,\n.mdui-snackbar-right-top {\n top: 0;\n}\n.mdui-snackbar-top,\n.mdui-snackbar-bottom {\n left: 50%;\n}\n@media (min-width: 600px) {\n .mdui-snackbar-left-top {\n top: 24px;\n left: 24px;\n }\n .mdui-snackbar-left-bottom {\n bottom: 24px;\n left: 24px;\n }\n .mdui-snackbar-right-top {\n top: 24px;\n right: 24px;\n }\n .mdui-snackbar-right-bottom {\n right: 24px;\n bottom: 24px;\n }\n}\n/* 文本 */\n.mdui-snackbar-text {\n position: relative;\n max-width: 100%;\n padding: 14px 0 14px 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n/* 按钮 */\n.mdui-snackbar-action {\n margin-right: -16px;\n white-space: nowrap;\n color: #FF80AB;\n}\n/**\n * =============================================================================\n * ************ Snackbar 强调色 ************\n * =============================================================================\n */\n.mdui-theme-accent-amber .mdui-snackbar-action {\n color: #FFE57F;\n}\n.mdui-theme-accent-blue .mdui-snackbar-action {\n color: #82B1FF;\n}\n.mdui-theme-accent-cyan .mdui-snackbar-action {\n color: #84FFFF;\n}\n.mdui-theme-accent-deep-orange .mdui-snackbar-action {\n color: #FF9E80;\n}\n.mdui-theme-accent-deep-purple .mdui-snackbar-action {\n color: #B388FF;\n}\n.mdui-theme-accent-green .mdui-snackbar-action {\n color: #B9F6CA;\n}\n.mdui-theme-accent-indigo .mdui-snackbar-action {\n color: #8C9EFF;\n}\n.mdui-theme-accent-light-blue .mdui-snackbar-action {\n color: #80D8FF;\n}\n.mdui-theme-accent-light-green .mdui-snackbar-action {\n color: #CCFF90;\n}\n.mdui-theme-accent-lime .mdui-snackbar-action {\n color: #F4FF81;\n}\n.mdui-theme-accent-orange .mdui-snackbar-action {\n color: #FFD180;\n}\n.mdui-theme-accent-pink .mdui-snackbar-action {\n color: #FF80AB;\n}\n.mdui-theme-accent-purple .mdui-snackbar-action {\n color: #EA80FC;\n}\n.mdui-theme-accent-red .mdui-snackbar-action {\n color: #FF8A80;\n}\n.mdui-theme-accent-teal .mdui-snackbar-action {\n color: #A7FFEB;\n}\n.mdui-theme-accent-yellow .mdui-snackbar-action {\n color: #FFFF8D;\n}\n/**\n * =============================================================================\n * ************ Snackbar dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-snackbar {\n background-color: #5d5d5d;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-snackbar {\n background-color: #5d5d5d;\n }\n}\n/**\n * =============================================================================\n * ************ Chip 纸片 ************\n * =============================================================================\n */\n.mdui-chip {\n display: inline-block;\n box-sizing: border-box;\n height: 32px;\n margin: 2px 0;\n color: inherit;\n white-space: nowrap;\n background-color: #e0e0e0;\n border-radius: 16px;\n cursor: pointer;\n user-select: none;\n transition: box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: box-shadow;\n}\n.mdui-chip:hover,\n.mdui-chip:focus {\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.mdui-chip:active {\n background-color: #d6d6d6;\n}\n/* 左侧的图标 */\n.mdui-chip-icon {\n position: relative;\n display: inline-block;\n width: 32px;\n height: 32px;\n margin-right: -4px;\n overflow: hidden;\n color: #fff;\n font-size: 18px;\n line-height: 32px;\n text-align: center;\n vertical-align: middle;\n background-color: #989898;\n border-radius: 50%;\n}\n.mdui-chip-icon .mdui-icon {\n position: absolute;\n top: 4px;\n left: 4px;\n color: #fff;\n}\n/* 文本 */\n.mdui-chip-title {\n display: inline-block;\n height: 32px;\n padding-right: 12px;\n padding-left: 12px;\n font-size: 14px;\n line-height: 32px;\n vertical-align: middle;\n}\n/* 删除按钮 */\n.mdui-chip-delete {\n display: inline-block;\n width: 24px;\n height: 24px;\n margin-right: 4px;\n margin-left: -8px;\n overflow: hidden;\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n border-radius: 50%;\n cursor: pointer;\n opacity: 0.54;\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: opacity;\n}\n.mdui-chip-delete:hover,\n.mdui-chip-delete:focus {\n opacity: 0.87;\n}\n/**\n * =============================================================================\n * ************ Chip dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-chip {\n background-color: #484848;\n}\n.mdui-theme-layout-dark .mdui-chip:active {\n background-color: #5d5d5d;\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-chip {\n background-color: #484848;\n }\n .mdui-theme-layout-auto .mdui-chip:active {\n background-color: #5d5d5d;\n }\n}\n/**\n * =============================================================================\n * ************ Bottom navigation 底部导航栏 ************\n * =============================================================================\n */\n.mdui-bottom-nav {\n position: relative;\n display: flex;\n height: 56px;\n margin: 0 auto;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n}\n@media (min-width: 600px) {\n .mdui-bottom-nav::before {\n flex-grow: 1;\n content: ' ';\n }\n .mdui-bottom-nav::after {\n flex-grow: 1;\n content: ' ';\n }\n}\n.mdui-bottom-nav a {\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 32px;\n max-width: none;\n padding: 8px 12px 10px 12px;\n overflow: hidden;\n color: inherit;\n font-size: 12px;\n text-align: center;\n text-decoration: none;\n text-overflow: ellipsis;\n cursor: pointer;\n opacity: 0.7;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n user-select: none;\n will-change: padding;\n}\n@media (min-width: 600px) {\n .mdui-bottom-nav a {\n max-width: 144px;\n }\n}\n.mdui-bottom-nav a .mdui-icon {\n opacity: 0.7;\n}\n.mdui-bottom-nav a label {\n display: block;\n width: 100%;\n cursor: pointer;\n transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: font-size;\n}\n.mdui-bottom-nav a .mdui-icon + label {\n margin-top: 6px;\n}\n.mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #3F51B5;\n font-size: 14px;\n opacity: 1;\n}\n.mdui-bottom-nav a.mdui-bottom-nav-active .mdui-icon {\n opacity: 1;\n}\n/* 只在激活时显示文本 */\n.mdui-bottom-nav-text-auto a {\n min-width: 32px;\n padding-right: 0;\n padding-left: 0;\n}\n@media (min-width: 600px) {\n .mdui-bottom-nav-text-auto a {\n max-width: 156px;\n }\n}\n.mdui-bottom-nav-text-auto a .mdui-icon {\n padding-top: 16px;\n transition: padding-top 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n will-change: padding-top;\n}\n.mdui-bottom-nav-text-auto a label {\n transform: scale(0);\n}\n.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active {\n padding-right: 18px;\n padding-left: 18px;\n}\n.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active .mdui-icon {\n padding-top: 0;\n}\n.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active label {\n transform: scale(1);\n}\n/* 固定到页面底部 */\n.mdui-bottom-nav-fixed {\n padding-bottom: 56px;\n}\n.mdui-bottom-nav-fixed .mdui-bottom-nav {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n}\n/**\n * =============================================================================\n * ************ Bottom Nav 主色 ************\n * =============================================================================\n */\n.mdui-theme-primary-amber .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #FFC107;\n}\n.mdui-theme-primary-blue .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #2196F3;\n}\n.mdui-theme-primary-blue-grey .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #607D8B;\n}\n.mdui-theme-primary-brown .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #795548;\n}\n.mdui-theme-primary-cyan .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #00BCD4;\n}\n.mdui-theme-primary-deep-orange .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #FF5722;\n}\n.mdui-theme-primary-deep-purple .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #673AB7;\n}\n.mdui-theme-primary-green .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #4CAF50;\n}\n.mdui-theme-primary-grey .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #9E9E9E;\n}\n.mdui-theme-primary-indigo .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #3F51B5;\n}\n.mdui-theme-primary-light-blue .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #03A9F4;\n}\n.mdui-theme-primary-light-green .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #8BC34A;\n}\n.mdui-theme-primary-lime .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #CDDC39;\n}\n.mdui-theme-primary-orange .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #FF9800;\n}\n.mdui-theme-primary-pink .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #E91E63;\n}\n.mdui-theme-primary-purple .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #9C27B0;\n}\n.mdui-theme-primary-red .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #F44336;\n}\n.mdui-theme-primary-teal .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #009688;\n}\n.mdui-theme-primary-yellow .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: #FFEB3B;\n}\n/* 带背景色的底部导航栏 */\n.mdui-bottom-nav[class*=\"mdui-color-\"] .mdui-bottom-nav-active {\n color: inherit !important;\n}\n/**\n * =============================================================================\n * ************ Progress Linear 线性进度条 ************\n * =============================================================================\n */\n/* 线性进度条 */\n.mdui-progress {\n position: relative;\n display: block;\n width: 100%;\n height: 4px;\n overflow: hidden;\n background-color: rgba(63, 81, 181, 0.2);\n border-radius: 2px;\n}\n/* 确定进度的线性进度条 */\n.mdui-progress-determinate {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: #3F51B5;\n transition: width 0.3s linear;\n}\n/* 不确定进度的线性进度条 */\n.mdui-progress-indeterminate {\n background-color: #3F51B5;\n}\n.mdui-progress-indeterminate::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: inherit;\n animation: mdui-progress-indeterminate 2s linear infinite;\n content: ' ';\n will-change: left, width;\n}\n.mdui-progress-indeterminate::after {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: inherit;\n animation: mdui-progress-indeterminate-short 2s linear infinite;\n content: ' ';\n will-change: left, width;\n}\n@keyframes mdui-progress-indeterminate {\n 0% {\n left: 0;\n width: 0;\n }\n 50% {\n left: 30%;\n width: 70%;\n }\n 75% {\n left: 100%;\n width: 0;\n }\n}\n@keyframes mdui-progress-indeterminate-short {\n 0% {\n left: 0;\n width: 0;\n }\n 50% {\n left: 0;\n width: 0;\n }\n 75% {\n left: 0;\n width: 25%;\n }\n 100% {\n left: 100%;\n width: 0;\n }\n}\n/**\n * =============================================================================\n * ************ Progress linear 主色 ************\n * =============================================================================\n */\n.mdui-theme-primary-amber .mdui-progress {\n background-color: rgba(255, 193, 7, 0.2);\n}\n.mdui-theme-primary-amber .mdui-progress-determinate,\n.mdui-theme-primary-amber .mdui-progress-indeterminate {\n background-color: #FFC107;\n}\n.mdui-theme-primary-blue .mdui-progress {\n background-color: rgba(33, 150, 243, 0.2);\n}\n.mdui-theme-primary-blue .mdui-progress-determinate,\n.mdui-theme-primary-blue .mdui-progress-indeterminate {\n background-color: #2196F3;\n}\n.mdui-theme-primary-blue-grey .mdui-progress {\n background-color: rgba(96, 125, 139, 0.2);\n}\n.mdui-theme-primary-blue-grey .mdui-progress-determinate,\n.mdui-theme-primary-blue-grey .mdui-progress-indeterminate {\n background-color: #607D8B;\n}\n.mdui-theme-primary-brown .mdui-progress {\n background-color: rgba(121, 85, 72, 0.2);\n}\n.mdui-theme-primary-brown .mdui-progress-determinate,\n.mdui-theme-primary-brown .mdui-progress-indeterminate {\n background-color: #795548;\n}\n.mdui-theme-primary-cyan .mdui-progress {\n background-color: rgba(0, 188, 212, 0.2);\n}\n.mdui-theme-primary-cyan .mdui-progress-determinate,\n.mdui-theme-primary-cyan .mdui-progress-indeterminate {\n background-color: #00BCD4;\n}\n.mdui-theme-primary-deep-orange .mdui-progress {\n background-color: rgba(255, 87, 34, 0.2);\n}\n.mdui-theme-primary-deep-orange .mdui-progress-determinate,\n.mdui-theme-primary-deep-orange .mdui-progress-indeterminate {\n background-color: #FF5722;\n}\n.mdui-theme-primary-deep-purple .mdui-progress {\n background-color: rgba(103, 58, 183, 0.2);\n}\n.mdui-theme-primary-deep-purple .mdui-progress-determinate,\n.mdui-theme-primary-deep-purple .mdui-progress-indeterminate {\n background-color: #673AB7;\n}\n.mdui-theme-primary-green .mdui-progress {\n background-color: rgba(76, 175, 80, 0.2);\n}\n.mdui-theme-primary-green .mdui-progress-determinate,\n.mdui-theme-primary-green .mdui-progress-indeterminate {\n background-color: #4CAF50;\n}\n.mdui-theme-primary-grey .mdui-progress {\n background-color: rgba(158, 158, 158, 0.2);\n}\n.mdui-theme-primary-grey .mdui-progress-determinate,\n.mdui-theme-primary-grey .mdui-progress-indeterminate {\n background-color: #9E9E9E;\n}\n.mdui-theme-primary-indigo .mdui-progress {\n background-color: rgba(63, 81, 181, 0.2);\n}\n.mdui-theme-primary-indigo .mdui-progress-determinate,\n.mdui-theme-primary-indigo .mdui-progress-indeterminate {\n background-color: #3F51B5;\n}\n.mdui-theme-primary-light-blue .mdui-progress {\n background-color: rgba(3, 169, 244, 0.2);\n}\n.mdui-theme-primary-light-blue .mdui-progress-determinate,\n.mdui-theme-primary-light-blue .mdui-progress-indeterminate {\n background-color: #03A9F4;\n}\n.mdui-theme-primary-light-green .mdui-progress {\n background-color: rgba(139, 195, 74, 0.2);\n}\n.mdui-theme-primary-light-green .mdui-progress-determinate,\n.mdui-theme-primary-light-green .mdui-progress-indeterminate {\n background-color: #8BC34A;\n}\n.mdui-theme-primary-lime .mdui-progress {\n background-color: rgba(205, 220, 57, 0.2);\n}\n.mdui-theme-primary-lime .mdui-progress-determinate,\n.mdui-theme-primary-lime .mdui-progress-indeterminate {\n background-color: #CDDC39;\n}\n.mdui-theme-primary-orange .mdui-progress {\n background-color: rgba(255, 152, 0, 0.2);\n}\n.mdui-theme-primary-orange .mdui-progress-determinate,\n.mdui-theme-primary-orange .mdui-progress-indeterminate {\n background-color: #FF9800;\n}\n.mdui-theme-primary-pink .mdui-progress {\n background-color: rgba(233, 30, 99, 0.2);\n}\n.mdui-theme-primary-pink .mdui-progress-determinate,\n.mdui-theme-primary-pink .mdui-progress-indeterminate {\n background-color: #E91E63;\n}\n.mdui-theme-primary-purple .mdui-progress {\n background-color: rgba(156, 39, 176, 0.2);\n}\n.mdui-theme-primary-purple .mdui-progress-determinate,\n.mdui-theme-primary-purple .mdui-progress-indeterminate {\n background-color: #9C27B0;\n}\n.mdui-theme-primary-red .mdui-progress {\n background-color: rgba(244, 67, 54, 0.2);\n}\n.mdui-theme-primary-red .mdui-progress-determinate,\n.mdui-theme-primary-red .mdui-progress-indeterminate {\n background-color: #F44336;\n}\n.mdui-theme-primary-teal .mdui-progress {\n background-color: rgba(0, 150, 136, 0.2);\n}\n.mdui-theme-primary-teal .mdui-progress-determinate,\n.mdui-theme-primary-teal .mdui-progress-indeterminate {\n background-color: #009688;\n}\n.mdui-theme-primary-yellow .mdui-progress {\n background-color: rgba(255, 235, 59, 0.2);\n}\n.mdui-theme-primary-yellow .mdui-progress-determinate,\n.mdui-theme-primary-yellow .mdui-progress-indeterminate {\n background-color: #FFEB3B;\n}\n/**\n * =============================================================================\n * ************ Progress Circular 圆形进度条 ************\n * =============================================================================\n */\n.mdui-spinner {\n position: relative;\n display: inline-block;\n width: 28px;\n height: 28px;\n animation: mdui-spinner 1568ms linear infinite;\n}\n@keyframes mdui-spinner {\n to {\n transform: rotate(360deg);\n }\n}\n.mdui-spinner-layer {\n position: absolute;\n width: 100%;\n height: 100%;\n border-color: #3F51B5;\n opacity: 0;\n opacity: 1;\n animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n.mdui-spinner-layer-1 {\n border-color: #42A5F5 !important;\n animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n.mdui-spinner-layer-2 {\n border-color: #F44336 !important;\n animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n.mdui-spinner-layer-3 {\n border-color: #FDD835 !important;\n animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n.mdui-spinner-layer-4 {\n border-color: #4CAF50 !important;\n animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n@keyframes mdui-spinner-layer-fill-unfill-rotate {\n 12.5% {\n transform: rotate(135deg);\n }\n 25% {\n transform: rotate(270deg);\n }\n 37.5% {\n transform: rotate(405deg);\n }\n 50% {\n transform: rotate(540deg);\n }\n 62.5% {\n transform: rotate(675deg);\n }\n 75% {\n transform: rotate(810deg);\n }\n 87.5% {\n transform: rotate(945deg);\n }\n to {\n transform: rotate(1080deg);\n }\n}\n@keyframes mdui-spinner-layer-1-fade-in-out {\n from {\n opacity: 1;\n }\n 25% {\n opacity: 1;\n }\n 26% {\n opacity: 0;\n }\n 89% {\n opacity: 0;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes mdui-spinner-layer-2-fade-in-out {\n from {\n opacity: 0;\n }\n 15% {\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n opacity: 1;\n }\n 51% {\n opacity: 0;\n }\n}\n@keyframes mdui-spinner-layer-3-fade-in-out {\n from {\n opacity: 0;\n }\n 40% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 75% {\n opacity: 1;\n }\n 76% {\n opacity: 0;\n }\n}\n@keyframes mdui-spinner-layer-4-fade-in-out {\n from {\n opacity: 0;\n }\n 65% {\n opacity: 0;\n }\n 75% {\n opacity: 1;\n }\n 90% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n.mdui-spinner-gap-patch {\n position: absolute;\n top: 0;\n left: 45%;\n width: 10%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n.mdui-spinner-gap-patch .mdui-spinner-circle {\n left: -450%;\n box-sizing: border-box;\n width: 1000%;\n}\n.mdui-spinner-circle-clipper {\n position: relative;\n display: inline-block;\n width: 50%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n}\n.mdui-spinner-circle-clipper .mdui-spinner-circle {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n box-sizing: border-box;\n width: 200%;\n height: 100%;\n border-color: inherit;\n border-style: solid;\n border-width: 3px;\n border-bottom-color: transparent !important;\n border-radius: 50%;\n animation: none;\n}\n.mdui-spinner-circle-clipper.mdui-spinner-left {\n float: left;\n}\n.mdui-spinner-circle-clipper.mdui-spinner-left .mdui-spinner-circle {\n left: 0;\n border-right-color: transparent !important;\n transform: rotate(129deg);\n animation: mdui-spinner-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n.mdui-spinner-circle-clipper.mdui-spinner-right {\n float: right;\n}\n.mdui-spinner-circle-clipper.mdui-spinner-right .mdui-spinner-circle {\n left: -100%;\n border-left-color: transparent !important;\n transform: rotate(-129deg);\n animation: mdui-spinner-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;\n}\n@keyframes mdui-spinner-left-spin {\n from {\n transform: rotate(130deg);\n }\n 50% {\n transform: rotate(-5deg);\n }\n to {\n transform: rotate(130deg);\n }\n}\n@keyframes mdui-spinner-right-spin {\n from {\n transform: rotate(-130deg);\n }\n 50% {\n transform: rotate(5deg);\n }\n to {\n transform: rotate(-130deg);\n }\n}\n/**\n * =============================================================================\n * ************ Spinner linear 主色 ************\n * =============================================================================\n */\n.mdui-theme-primary-amber .mdui-spinner-layer {\n border-color: #FFC107;\n}\n.mdui-theme-primary-blue .mdui-spinner-layer {\n border-color: #2196F3;\n}\n.mdui-theme-primary-blue-grey .mdui-spinner-layer {\n border-color: #607D8B;\n}\n.mdui-theme-primary-brown .mdui-spinner-layer {\n border-color: #795548;\n}\n.mdui-theme-primary-cyan .mdui-spinner-layer {\n border-color: #00BCD4;\n}\n.mdui-theme-primary-deep-orange .mdui-spinner-layer {\n border-color: #FF5722;\n}\n.mdui-theme-primary-deep-purple .mdui-spinner-layer {\n border-color: #673AB7;\n}\n.mdui-theme-primary-green .mdui-spinner-layer {\n border-color: #4CAF50;\n}\n.mdui-theme-primary-grey .mdui-spinner-layer {\n border-color: #9E9E9E;\n}\n.mdui-theme-primary-indigo .mdui-spinner-layer {\n border-color: #3F51B5;\n}\n.mdui-theme-primary-light-blue .mdui-spinner-layer {\n border-color: #03A9F4;\n}\n.mdui-theme-primary-light-green .mdui-spinner-layer {\n border-color: #8BC34A;\n}\n.mdui-theme-primary-lime .mdui-spinner-layer {\n border-color: #CDDC39;\n}\n.mdui-theme-primary-orange .mdui-spinner-layer {\n border-color: #FF9800;\n}\n.mdui-theme-primary-pink .mdui-spinner-layer {\n border-color: #E91E63;\n}\n.mdui-theme-primary-purple .mdui-spinner-layer {\n border-color: #9C27B0;\n}\n.mdui-theme-primary-red .mdui-spinner-layer {\n border-color: #F44336;\n}\n.mdui-theme-primary-teal .mdui-spinner-layer {\n border-color: #009688;\n}\n.mdui-theme-primary-yellow .mdui-spinner-layer {\n border-color: #FFEB3B;\n}\n/**\n * =============================================================================\n * ************ Menu 菜单 ************\n * =============================================================================\n */\n/* 菜单 */\n.mdui-menu {\n position: fixed;\n z-index: 99999;\n display: block;\n box-sizing: border-box;\n width: 168px;\n margin: 0;\n padding: 8px 0;\n overflow-y: auto;\n color: rgba(0, 0, 0, 0.87);\n font-size: 16px;\n list-style: none;\n background-color: #fff;\n border-radius: 2px;\n transform: scale(0);\n visibility: hidden;\n opacity: 0;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-duration: 0.3s;\n transition-property: transform, opacity, visibility;\n will-change: transform, opacity, visibility;\n -webkit-overflow-scrolling: touch;\n box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mdui-menu .mdui-divider {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n/* 打开状态的菜单 */\n.mdui-menu-open {\n transform: scale(1);\n visibility: visible;\n opacity: 1;\n}\n/* 关闭中的菜单 */\n.mdui-menu-closing {\n transform: scale(1);\n visibility: visible;\n opacity: 0;\n}\n/* 菜单项 */\n.mdui-menu-item {\n position: relative;\n}\n.mdui-menu-item > a {\n position: relative;\n display: block;\n height: 48px;\n padding: 0 16px;\n color: inherit;\n line-height: 48px;\n text-decoration: none;\n user-select: none;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mdui-menu-item > a:hover {\n background-color: #EEEEEE;\n}\n.mdui-menu-item > .mdui-menu {\n position: absolute;\n box-shadow: 0 5px 6px -3px rgba(0, 0, 0, 0.2), 0 9px 12px 1px rgba(0, 0, 0, 0.14), 0 3px 16px 2px rgba(0, 0, 0, 0.12);\n}\n.mdui-menu-item[disabled] > a {\n color: rgba(0, 0, 0, 0.38) !important;\n cursor: default;\n}\n.mdui-menu-item[disabled] > a:hover {\n background-color: inherit !important;\n}\n.mdui-menu-item[disabled] > a .mdui-icon {\n color: rgba(0, 0, 0, 0.26);\n}\n/* 激活状态的菜单项 */\n.mdui-menu-item-active {\n background-color: #EEEEEE;\n}\n/* 菜单中的图标 */\n.mdui-menu-item-icon {\n display: inline-block;\n box-sizing: border-box;\n width: 40px;\n padding-right: 16px;\n color: rgba(0, 0, 0, 0.54);\n}\n/* 菜单中的辅助文本或图标 */\n.mdui-menu-item-helper {\n float: right;\n}\n/* 有子菜单的条目的图标 */\n.mdui-menu-item-more {\n float: right;\n width: 24px;\n height: 24px;\n margin: 4px 0;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' opacity='.54'/%3E%3C/svg%3E\");\n}\n/* 级联菜单 */\n.mdui-menu-cascade {\n width: 320px;\n padding: 16px 0;\n overflow-y: visible;\n font-size: 15px;\n}\n.mdui-menu-cascade > .mdui-menu-item > a {\n height: 32px;\n padding: 0 24px;\n line-height: 32px;\n}\n/**\n * =============================================================================\n * ************ Menu dark ************\n * =============================================================================\n */\n.mdui-theme-layout-dark .mdui-menu {\n color: #fff;\n background-color: #424242;\n}\n.mdui-theme-layout-dark .mdui-menu-item > a:hover {\n background-color: #616161;\n}\n.mdui-theme-layout-dark .mdui-menu-item[disabled] > a {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.mdui-theme-layout-dark .mdui-menu-item[disabled] > a .mdui-icon {\n color: rgba(255, 255, 255, 0.3);\n}\n.mdui-theme-layout-dark .mdui-menu-item-active {\n background-color: #616161;\n}\n.mdui-theme-layout-dark .mdui-menu-item-icon {\n color: #ffffff;\n}\n.mdui-theme-layout-dark .mdui-menu-item-more {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' fill='%23FFF'/%3E%3C/svg%3E\");\n}\n@media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto .mdui-menu {\n color: #fff;\n background-color: #424242;\n }\n .mdui-theme-layout-auto .mdui-menu-item > a:hover {\n background-color: #616161;\n }\n .mdui-theme-layout-auto .mdui-menu-item[disabled] > a {\n color: rgba(255, 255, 255, 0.5) !important;\n }\n .mdui-theme-layout-auto .mdui-menu-item[disabled] > a .mdui-icon {\n color: rgba(255, 255, 255, 0.3);\n }\n .mdui-theme-layout-auto .mdui-menu-item-active {\n background-color: #616161;\n }\n .mdui-theme-layout-auto .mdui-menu-item-icon {\n color: #ffffff;\n }\n .mdui-theme-layout-auto .mdui-menu-item-more {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' fill='%23FFF'/%3E%3C/svg%3E\");\n }\n}\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","/**\n * =============================================================================\n * ************ 公共样式 ************\n * =============================================================================\n */\n* {\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n color: @body-text-color;\n font-size: @screen-xs-font-size;\n font-family: @font-family-base;\n background-color: @body-background-color;\n @media (min-width: @screen-sm-min) {\n font-size: @screen-sm-font-size;\n }\n @media (min-width: @screen-md-min) {\n font-size: @screen-md-font-size;\n }\n\n // 滚动条样式\n * {\n .mdui-scrollbar-beautify(light);\n }\n}\n\n/* 锁定屏幕 */\nbody.mdui-locked {\n overflow: hidden;\n}\n\n/* 遮罩层 */\n.mdui-overlay {\n position: fixed;\n top: -5000px;\n right: -5000px;\n bottom: -5000px;\n left: -5000px;\n z-index: @z-index-overlay;\n background: rgba(0, 0, 0, .4);\n backface-visibility: hidden;\n visibility: hidden;\n opacity: 0;\n transition-duration: .3s;\n transition-property: opacity, visibility;\n will-change: opacity;\n}\n\n/* 显示遮罩层 */\n.mdui-overlay-show {\n visibility: visible;\n opacity: 1;\n}\n\n/* 取消 transition 过渡效果 */\n.mdui-no-transition {\n transition-property: none !important;\n}\n\n\n/**\n * =============================================================================\n * ************ Global dark ************\n * =============================================================================\n */\n.layout-theme({\n color: #fff;\n background-color: @layout-dark-color-3;\n\n // 夜间模式滚动条样式\n * {\n .mdui-scrollbar-beautify(dark);\n }\n});\n","// ======================== 边距\n.mdui-m-a(@spacing) {\n margin: @spacing * @spacing-base;\n}\n.mdui-m-t(@spacing) {\n margin-top: @spacing * @spacing-base;\n}\n.mdui-m-r(@spacing) {\n margin-right: @spacing * @spacing-base;\n}\n.mdui-m-b(@spacing) {\n margin-bottom: @spacing * @spacing-base;\n}\n.mdui-m-l(@spacing) {\n margin-left: @spacing * @spacing-base;\n}\n.mdui-m-x(@spacing) {\n margin-right: @spacing * @spacing-base;\n margin-left: @spacing * @spacing-base;\n}\n.mdui-m-y(@spacing) {\n margin-top: @spacing * @spacing-base;\n margin-bottom: @spacing * @spacing-base;\n}\n\n.mdui-p-a(@spacing) {\n padding: @spacing * @spacing-base;\n}\n.mdui-p-t(@spacing) {\n padding-top: @spacing * @spacing-base;\n}\n.mdui-p-r(@spacing) {\n padding-right: @spacing * @spacing-base;\n}\n.mdui-p-b(@spacing) {\n padding-bottom: @spacing * @spacing-base;\n}\n.mdui-p-l(@spacing) {\n padding-left: @spacing * @spacing-base;\n}\n.mdui-p-x(@spacing) {\n padding-right: @spacing * @spacing-base;\n padding-left: @spacing * @spacing-base;\n}\n.mdui-p-y(@spacing) {\n padding-top: @spacing * @spacing-base;\n padding-bottom: @spacing * @spacing-base;\n}\n\n//=========================== 清除浮动\n// 清除浮动\n.mdui-clearfix() {\n &::before,\n &::after {\n display: table;\n content: ' ';\n }\n &::after {\n clear: both;\n }\n}\n\n// 用省略号代替被截断的文本\n.mdui-text-truncate() {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n// 文本强制换行\n.mdui-textwrap() {\n word-wrap: break-word;\n word-break: break-all;\n}\n\n// 使子元素垂直居中\n.mdui-valign() {\n display: flex;\n align-items: center;\n}\n\n// 使元素水平居中\n.mdui-center() {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n\n// 美化滚动条样式\n.mdui-scrollbar-beautify(@layout: light) {\n // 亮色主题\n & when (@layout = light) {\n &::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: transparent;\n // 桌面端\n @media (min-width: @screen-md-min) {\n width: 8px;\n height: 8px;\n }\n }\n\n &::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n }\n }\n\n // 暗色主题\n & when (@layout = dark) {\n &::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background: transparent;\n // 桌面端\n @media (min-width: @screen-md-min) {\n width: 8px;\n height: 8px;\n }\n }\n\n &::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n }\n }\n}\n",".layout-theme(@rules) {\n & when (@globalLayoutDark = true) {\n .mdui-theme-layout-dark {\n @rules();\n }\n }\n & when (@globalLayoutAuto = true) {\n @media (prefers-color-scheme: dark) {\n .mdui-theme-layout-auto {\n @rules();\n }\n }\n }\n}\n","@animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1); // 慢 - 快 - 慢\n@animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1); // 快 - 慢\n@animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1); // 慢 - 快\n\n@animation-curve-default: @animation-curve-fast-out-slow-in;","// 根据背景色设置文本色\n._mdui-color-text-color(@color-is-dark) {\n & when (@color-is-dark = true) {\n color: @color-white-text;\n }\n & when (@color-is-dark = false) {\n color: @color-black-text;\n }\n}\n\n// hover 状态背景色\n._mdui-background-color-hover(@colorName) {\n @color-is-dark: 'color-@{colorName}-500-is-dark';\n & when (@@color-is-dark = true) {\n @color: 'color-@{colorName}-400';\n\n background-color: @@color;\n }\n & when (@@color-is-dark = false) {\n @color: 'color-@{colorName}-600';\n\n background-color: @@color;\n }\n}\n\n// active 状态背景色\n._mdui-background-color-active(@colorName) {\n @color-is-dark: 'color-@{colorName}-500-is-dark';\n & when (@@color-is-dark = true) {\n @color: 'color-@{colorName}-300';\n\n background-color: @@color;\n }\n & when (@@color-is-dark = false) {\n @color: 'color-@{colorName}-700';\n\n background-color: @@color;\n }\n}\n\n// 仅设置背景色\n.mdui-background-color(@colorName, @degree: 500) {\n @color: 'color-@{colorName}-@{degree}';\n\n background-color: @@color;\n}\n\n// 背景色和文本色\n.mdui-color(@colorName, @degree: 500) {\n .mdui-background-color(@colorName, @degree);\n\n @color-is-dark: 'color-@{colorName}-@{degree}-is-dark';\n ._mdui-color-text-color(@@color-is-dark);\n}\n\n// 文本色\n.mdui-text-color(@colorName, @degree: 500, @opacity: 1) {\n @color: 'color-@{colorName}-@{degree}';\n\n & when (@opacity = 1) {\n color: @@color;\n }\n & when (@opacity < 1) {\n color: rgba(red(@@color), green(@@color), blue(@@color), @opacity);\n }\n}\n","/**\n * =============================================================================\n * ************ Color 颜色 ************\n * =============================================================================\n */\n\n@global-primary-color-degrees-length: length(@globalPrimaryColorDegrees);\n@global-primary-colors-length: length(@globalPrimaryColors);\n@global-accent-color-degrees-length: length(@globalAccentColorDegrees);\n@global-accent-colors-length: length(@globalAccentColors);\n\n\n/**\n * .mdui-theme-primary-[color] .mdui-color-theme\n * .mdui-theme-primary-[color] .mdui-color-theme-[degree]\n */\n\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n\n @colorName: extract(@globalPrimaryColors, @counter-color);\n\n .mdui-theme-primary-@{colorName} when not (@colorName = null) {\n\n // .mdui-theme-primary-[color] .mdui-color-theme\n .mdui-color-theme {\n .mdui-color(@colorName) !important;\n }\n\n .loop-primary-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-primary-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalPrimaryColorDegrees, @counter-degree);\n\n // .mdui-theme-primary-[color] .mdui-color-theme-[degree]\n .mdui-color-theme-@{degree} when not (@degree = null) {\n .mdui-color(@colorName, @degree) !important;\n }\n }\n .loop-primary-degree-theme(@global-primary-color-degrees-length);\n }\n }\n .loop-primary-theme(@global-primary-colors-length);\n}\n\n\n/**\n * .mdui-theme-accent-[color] .mdui-color-theme-accent\n * .mdui-theme-accent-[color] .mdui-color-theme-[degree]\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n // .mdui-theme-accent-[color] .mdui-color-theme-accent\n .mdui-color-theme-accent {\n .mdui-color(@colorName, a200) !important;\n }\n\n .loop-accent-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-accent-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalAccentColorDegrees, @counter-degree);\n\n // .mdui-theme-accent-[color] .mdui-color-theme-[degree]\n .mdui-color-theme-@{degree} when not (@degree = null) {\n .mdui-color(@colorName, @degree) !important;\n }\n }\n .loop-accent-degree-theme(@global-accent-color-degrees-length);\n }\n }\n .loop-accent-theme(@global-accent-colors-length);\n}\n\n\n/**\n * .mdui-color-[color]\n * .mdui-color-[color]-[degree]\n */\n\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n\n @colorName: extract(@globalPrimaryColors, @counter-color);\n\n & {\n // .mdui-color-[color]\n .mdui-color-@{colorName} when not (@colorName = null) {\n .mdui-color(@colorName) !important;\n }\n\n .loop-primary-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-primary-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalPrimaryColorDegrees, @counter-degree);\n\n // .mdui-color-[color]-[degree]\n .mdui-color-@{colorName}-@{degree} when not (@degree = null) {\n .mdui-color(@colorName, @degree) !important;\n }\n }\n .loop-primary-degree-theme(@global-primary-color-degrees-length);\n }\n }\n .loop-primary-theme(@global-primary-colors-length);\n}\n\n\n/**\n * .mdui-color-[color]-accent\n * .mdui-color-[color]-[degree]\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n\n @colorName: extract(@globalAccentColors, @counter-color);\n\n &{\n // .mdui-color-[color]-accent\n .mdui-color-@{colorName}-accent when not (@colorName = null) {\n .mdui-color(@colorName, a200) !important;\n }\n\n .loop-accent-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-accent-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalAccentColorDegrees, @counter-degree);\n\n // .mdui-color-[color]-[degree]\n .mdui-color-@{colorName}-@{degree} when not (@degree = null) {\n .mdui-color(@colorName, @degree) !important;\n }\n }\n .loop-accent-degree-theme(@global-accent-color-degrees-length);\n }\n }\n .loop-accent-theme(@global-accent-colors-length);\n}\n\n\n/**\n * .mdui-color-black\n * .mdui-color-white\n * .mdui-color-transparent\n */\n\n.mdui-color-black {\n color: @color-white-text !important;\n background-color: @color-black !important;\n}\n\n.mdui-color-white {\n color: @color-black-text !important;\n background-color: @color-white !important;\n}\n\n.mdui-color-transparent {\n background-color: @color-transparent !important;\n}\n\n\n/**\n * .mdui-theme-primary-[color] .mdui-text-color-theme\n * .mdui-theme-primary-[color] .mdui-text-color-theme-[degree]\n */\n\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n\n @colorName: extract(@globalPrimaryColors, @counter-color);\n\n .mdui-theme-primary-@{colorName} when not (@colorName = null) {\n\n // .mdui-theme-primary-[color] .mdui-text-color-theme\n .mdui-text-color-theme {\n .mdui-text-color(@colorName) !important;\n }\n\n .loop-primary-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-primary-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalPrimaryColorDegrees, @counter-degree);\n\n // .mdui-theme-primary-[color] .mdui-text-color-theme-[degree]\n .mdui-text-color-theme-@{degree} when not (@degree = null) {\n .mdui-text-color(@colorName, @degree) !important;\n }\n }\n .loop-primary-degree-theme(@global-primary-color-degrees-length);\n }\n }\n .loop-primary-theme(@global-primary-colors-length);\n}\n\n\n/**\n * .mdui-theme-accent-[color] .mdui-text-color-theme-accent\n * .mdui-theme-accent-[color] .mdui-text-color-theme-[degree]\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n // .mdui-theme-accent-[color] .mdui-text-color-theme-accent\n .mdui-text-color-theme-accent {\n .mdui-text-color(@colorName, a200) !important;\n }\n\n .loop-accent-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-accent-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalAccentColorDegrees, @counter-degree);\n\n // .mdui-theme-accent-[color] .mdui-text-color-theme-[degree]\n .mdui-text-color-theme-@{degree} when not (@degree = null) {\n .mdui-text-color(@colorName, @degree) !important;\n }\n }\n .loop-accent-degree-theme(@global-accent-color-degrees-length);\n }\n }\n .loop-accent-theme(@global-accent-colors-length);\n}\n\n\n/**\n * .mdui-text-color-[color]\n * .mdui-text-color-[color]-[degree]\n */\n\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n\n @colorName: extract(@globalPrimaryColors, @counter-color);\n\n &{\n // .mdui-text-color-[color]\n .mdui-text-color-@{colorName} when not (@colorName = null) {\n .mdui-text-color(@colorName) !important;\n }\n\n .loop-primary-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-primary-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalPrimaryColorDegrees, @counter-degree);\n\n // .mdui-text-color-[color]-[degree]\n .mdui-text-color-@{colorName}-@{degree} when not (@degree = null) {\n .mdui-text-color(@colorName, @degree) !important;\n }\n }\n .loop-primary-degree-theme(@global-primary-color-degrees-length);\n }\n }\n .loop-primary-theme(@global-primary-colors-length);\n}\n\n\n/**\n * .mdui-text-color-[color]-accent\n * .mdui-text-color-[color]-[degree]\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n\n @colorName: extract(@globalAccentColors, @counter-color);\n\n &{\n // .mdui-text-color-[color]-accent\n .mdui-text-color-@{colorName}-accent when not (@colorName = null) {\n .mdui-text-color(@colorName, a200) !important;\n }\n\n .loop-accent-degree-theme(@counter-degree) when (@counter-degree > 0) {\n .loop-accent-degree-theme((@counter-degree - 1));\n\n @degree: extract(@globalAccentColorDegrees, @counter-degree);\n\n // .mdui-text-color-[color]-[degree]\n .mdui-text-color-@{colorName}-@{degree} when not (@degree = null) {\n .mdui-text-color(@colorName, @degree) !important;\n }\n }\n .loop-accent-degree-theme(@global-accent-color-degrees-length);\n }\n }\n .loop-accent-theme(@global-accent-colors-length);\n}\n\n\n/**\n * .mdui-text-color-black\n * .mdui-text-color-black-[]\n * .mdui-text-color-theme-[]\n */\n\n.mdui-text-color-black {\n color: @color-black !important;\n}\n.mdui-text-color-black-text,\n.mdui-text-color-theme-text {\n color: @color-black-text !important;\n}\n.mdui-text-color-black-secondary,\n.mdui-text-color-theme-secondary {\n color: @color-black-secondary !important;\n}\n.mdui-text-color-black-disabled,\n.mdui-text-color-theme-disabled {\n color: @color-black-disabled !important;\n}\n.mdui-text-color-black-divider,\n.mdui-text-color-theme-divider {\n color: @color-black-divider !important;\n}\n.mdui-text-color-black-icon,\n.mdui-text-color-theme-icon {\n color: @color-black-icon !important;\n}\n.mdui-text-color-black-icon-disabled,\n.mdui-text-color-theme-icon-disabled {\n color: @color-black-icon-disabled !important;\n}\n\n/**\n * .mdui-text-color-white\n * .mdui-text-color-white-[]\n */\n.mdui-text-color-white {\n color: @color-white !important;\n}\n.mdui-text-color-white-text {\n color: @color-white-text !important;\n}\n.mdui-text-color-white-secondary {\n color: @color-white-secondary !important;\n}\n.mdui-text-color-white-disabled {\n color: @color-white-disabled !important;\n}\n.mdui-text-color-white-divider {\n color: @color-white-divider !important;\n}\n.mdui-text-color-white-icon {\n color: @color-white-icon !important;\n}\n.mdui-text-color-white-icon-disabled {\n color: @color-white-icon-disabled !important;\n}\n\n/**\n * .mdui-text-color-theme-[] 深色主题\n */\n.layout-theme({\n .mdui-text-color-theme-text {\n color: @color-white-text !important;\n }\n .mdui-text-color-theme-secondary {\n color: @color-white-secondary !important;\n }\n .mdui-text-color-theme-disabled {\n color: @color-white-disabled !important;\n }\n .mdui-text-color-theme-divider {\n color: @color-white-divider !important;\n }\n .mdui-text-color-theme-icon {\n color: @color-white-icon !important;\n }\n .mdui-text-color-theme-icon-disabled {\n color: @color-white-icon-disabled !important;\n }\n});\n","/**\n * =============================================================================\n * ************ Helper 辅助类 ************\n * =============================================================================\n */\n\n/**\n * =================== 边距\n */\n._spacing_margin_mixin(@spacing) when (@spacing > -1) {\n ._spacing_margin_mixin(@spacing - 1);\n\n .mdui-m-a-@{spacing} {\n .mdui-m-a(@spacing) !important;\n }\n .mdui-m-t-@{spacing} {\n .mdui-m-t(@spacing) !important;\n }\n .mdui-m-r-@{spacing} {\n .mdui-m-r(@spacing) !important;\n }\n .mdui-m-b-@{spacing} {\n .mdui-m-b(@spacing) !important;\n }\n .mdui-m-l-@{spacing} {\n .mdui-m-l(@spacing) !important;\n }\n .mdui-m-x-@{spacing} {\n .mdui-m-x(@spacing) !important;\n }\n .mdui-m-y-@{spacing} {\n .mdui-m-y(@spacing) !important;\n }\n\n .mdui-p-a-@{spacing} {\n .mdui-p-a(@spacing) !important;\n }\n .mdui-p-t-@{spacing} {\n .mdui-p-t(@spacing) !important;\n }\n .mdui-p-r-@{spacing} {\n .mdui-p-r(@spacing) !important;\n }\n .mdui-p-b-@{spacing} {\n .mdui-p-b(@spacing) !important;\n }\n .mdui-p-l-@{spacing} {\n .mdui-p-l(@spacing) !important;\n }\n .mdui-p-x-@{spacing} {\n .mdui-p-x(@spacing) !important;\n }\n .mdui-p-y-@{spacing} {\n .mdui-p-y(@spacing) !important;\n }\n}\n\n._spacing_margin_mixin(5);\n\n\n/**\n * ======================== 快速浮动\n */\n\n/* 向左浮动 */\n.mdui-float-left {\n float: left !important;\n}\n\n/* 向右浮动 */\n.mdui-float-right {\n float: right !important;\n}\n\n/**\n * ========================= 水平居中\n */\n\n/* 水平居中 */\n.mdui-center {\n .mdui-center() !important;\n}\n\n/**\n * ========================= 垂直居中\n */\n\n/* 垂直居中 */\n.mdui-valign {\n .mdui-valign() !important;\n}\n\n/**\n * ========================= 文本对齐方式\n */\n\n/* 文本左对齐 */\n.mdui-text-left {\n text-align: left !important;\n}\n\n/* 文本居中对齐 */\n.mdui-text-center {\n text-align: center !important;\n}\n\n/* 文本向右对齐 */\n.mdui-text-right {\n text-align: right !important;\n}\n\n/**\n * ========================= 文本大小写转换\n */\n\n/* 文本转为小写 */\n.mdui-text-lowercase {\n text-transform: lowercase !important;\n}\n\n/* 文本转为大写 */\n.mdui-text-uppercase {\n text-transform: uppercase !important;\n}\n\n/* 文本转为单词的首字母大写 */\n.mdui-text-capitalize {\n text-transform: capitalize !important;\n}\n\n/**\n * ======================== 文本截断\n */\n\n/* 文本截断 */\n.mdui-text-truncate {\n .mdui-text-truncate();\n}\n\n/**\n * ========================= 清除浮动\n */\n\n/* 清除浮动 */\n.mdui-clearfix {\n .mdui-clearfix();\n}\n\n/**\n * ========================= 隐藏内容\n */\n\n/* 隐藏元素 */\n.mdui-hidden,\n[hidden] {\n display: none !important;\n}\n\n/* 使元素不可见 */\n.mdui-invisible {\n visibility: hidden;\n}\n\n/* Responsive utilities 响应式工具\n ========================================================================== */\n\n/* 在特定屏幕的特备上隐藏 */\n@media (max-width: @screen-xs-max) {\n .mdui-hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .mdui-hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .mdui-hidden-md {\n display: none !important;\n }\n}\n@media (min-width: @screen-lg-min) and (max-width: @screen-lg-max) {\n .mdui-hidden-lg {\n display: none !important;\n }\n}\n@media (min-width: @screen-xl-min) {\n .mdui-hidden-xl {\n display: none !important;\n }\n}\n\n/* 在比特定屏幕小的设备上隐藏 */\n@media (max-width: @screen-xs-max) {\n .mdui-hidden-xs-down {\n display: none !important;\n }\n}\n@media (max-width: @screen-sm-max) {\n .mdui-hidden-sm-down {\n display: none !important;\n }\n}\n@media (max-width: @screen-md-max) {\n .mdui-hidden-md-down {\n display: none !important;\n }\n}\n@media (max-width: @screen-lg-max) {\n .mdui-hidden-lg-down {\n display: none !important;\n }\n}\n.mdui-hidden-xl-down {\n display: none !important;\n}\n\n/* 在比特定屏幕大的设备上隐藏 */\n.mdui-hidden-xs-up {\n display: none !important;\n}\n@media (min-width: @screen-sm-min) {\n .mdui-hidden-sm-up {\n display: none !important;\n }\n}\n@media (min-width: @screen-md-min) {\n .mdui-hidden-md-up {\n display: none !important;\n }\n}\n@media (min-width: @screen-lg-min) {\n .mdui-hidden-lg-up {\n display: none !important;\n }\n}\n@media (min-width: @screen-xl-min) {\n .mdui-hidden-xl-up {\n display: none !important;\n }\n}\n","/**\n * =============================================================================\n * ************ Icon 图标 ************\n * =============================================================================\n */\n\n.mdui-icon,\n.mdui-icon::before {\n color: inherit;\n font-weight: normal;\n font-size: 24px; /* Preferred icon size */\n font-style: normal;\n line-height: 1;\n direction: ltr;\n letter-spacing: normal;\n white-space: nowrap;\n text-transform: none;\n vertical-align: middle;\n word-wrap: normal;\n}\n\n.mdui-icon {\n display: inline-block;\n text-align: center;\n}\n\n.mdui-icon::before {\n display: block !important;\n width: 24px;\n height: 24px;\n}\n","/**\n * =============================================================================\n * ************ Material Icons ************\n * =============================================================================\n *\n * https://github.com/google/material-design-icons/\n * v3.0.1\n */\n\n@import './icon';\n\n@font-face {\n font-weight: 400;\n font-family: 'Material Icons';\n font-style: normal;\n src: local('Material Icons'), local('MaterialIcons-Regular'),\n url(../icons/material-icons/MaterialIcons-Regular.woff2) format('woff2'),\n url(../icons/material-icons/MaterialIcons-Regular.woff) format('woff');\n}\n\n.material-icons {\n /* stylelint-disable-next-line */\n font-family: 'Material Icons';\n\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n\n /* Support for IE. */\n font-feature-settings: 'liga';\n}\n","/**\n * =============================================================================\n * ************ Media 媒体工具 ************\n * =============================================================================\n */\n\n/* 响应式图片和视频 */\n.mdui-img-fluid,\n.mdui-video-fluid {\n .mdui-img-fluid();\n}\n\n/* 圆角图片 */\n.mdui-img-rounded {\n border-radius: 2px;\n}\n\n/* 圆形图片 */\n.mdui-img-circle {\n border-radius: 50%;\n}\n\n// embed\n.mdui-video-container {\n position: relative;\n height: 0;\n padding-bottom: 56.25%;\n overflow: hidden;\n\n iframe,\n object,\n embed {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%\n }\n}\n",".mdui-img-fluid() {\n display: block;\n max-width: 100%;\n height: auto;\n}\n\n.mdui-video-fluid() {\n display: block;\n max-width: 100%;\n height: auto;\n}\n","/**\n * =============================================================================\n * ************ Roboto 字体 ************\n * =============================================================================\n */\n\n@font-face {\n font-weight: 100;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Thin'), local('Roboto-Thin'),\n url('../fonts/roboto/Roboto-Thin.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-Thin.woff') format('woff');\n}\n\n@font-face {\n font-weight: 100;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto ThinItalic'), local('Roboto-ThinItalic'),\n url('../fonts/roboto/Roboto-ThinItalic.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-ThinItalic.woff') format('woff');\n}\n\n@font-face {\n font-weight: 300;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Light'), local('Roboto-Light'),\n url('../fonts/roboto/Roboto-Light.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-Light.woff') format('woff');\n}\n\n@font-face {\n font-weight: 300;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto LightItalic'), local('Roboto-LightItalic'),\n url('../fonts/roboto/Roboto-LightItalic.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-LightItalic.woff') format('woff');\n}\n\n@font-face {\n font-weight: 400;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Regular'), local('Roboto-Regular'),\n url('../fonts/roboto/Roboto-Regular.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-Regular.woff') format('woff');\n}\n\n@font-face {\n font-weight: 400;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto RegularItalic'), local('Roboto-RegularItalic'),\n url('../fonts/roboto/Roboto-RegularItalic.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-RegularItalic.woff') format('woff');\n}\n\n@font-face {\n font-weight: 500;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Medium'), local('Roboto-Medium'),\n url('../fonts/roboto/Roboto-Medium.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-Medium.woff') format('woff');\n}\n\n@font-face {\n font-weight: 500;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto MediumItalic'), local('Roboto-MediumItalic'),\n url('../fonts/roboto/Roboto-MediumItalic.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-MediumItalic.woff') format('woff');\n}\n\n@font-face {\n font-weight: 700;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Bold'), local('Roboto-Bold'),\n url('../fonts/roboto/Roboto-Bold.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-Bold.woff') format('woff');\n}\n\n@font-face {\n font-weight: 700;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto BoldItalic'), local('Roboto-BoldItalic'),\n url('../fonts/roboto/Roboto-BoldItalic.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-BoldItalic.woff') format('woff');\n}\n\n@font-face {\n font-weight: 900;\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n src: local('Roboto Black'), local('Roboto-Black'),\n url('../fonts/roboto/Roboto-Black.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-Black.woff') format('woff');\n}\n\n@font-face {\n font-weight: 900;\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n src: local('Roboto BlackItalic'), local('Roboto-BlackItalic'),\n url('../fonts/roboto/Roboto-BlackItalic.woff2') format('woff2'),\n url('../fonts/roboto/Roboto-BlackItalic.woff') format('woff');\n}\n","/**\n * =============================================================================\n * ************ Typography 样式排版 ************\n * =============================================================================\n */\n\n/* .mdui-typo-display-4 */\n.mdui-typo-display-4,\n.mdui-typo-display-4-opacity {\n .mdui-typo-display-4();\n}\n.mdui-typo-display-4-opacity {\n ._mdui-typo-display-4-opacity();\n}\n\n/* .mdui-typo-display-3 */\n.mdui-typo-display-3,\n.mdui-typo-display-3-opacity {\n .mdui-typo-display-3();\n}\n.mdui-typo-display-3-opacity {\n ._mdui-typo-display-3-opacity();\n}\n\n/* .mdui-typo-display-2 */\n.mdui-typo-display-2,\n.mdui-typo-display-2-opacity {\n .mdui-typo-display-2();\n}\n.mdui-typo-display-2-opacity {\n ._mdui-typo-display-2-opacity();\n}\n\n/* .mdui-typo-display-1 */\n.mdui-typo-display-1,\n.mdui-typo-display-1-opacity {\n .mdui-typo-display-1();\n}\n.mdui-typo-display-1-opacity {\n ._mdui-typo-display-1-opacity();\n}\n\n/* .mdui-typo-headline */\n.mdui-typo-headline,\n.mdui-typo-headline-opacity {\n .mdui-typo-headline();\n}\n.mdui-typo-headline-opacity {\n ._mdui-typo-headline-opacity();\n}\n\n/* .mdui-typo-title */\n.mdui-typo-title,\n.mdui-typo-title-opacity {\n .mdui-typo-title();\n}\n.mdui-typo-title-opacity {\n ._mdui-typo-title-opacity();\n}\n\n.mdui-typo-subheading,\n.mdui-typo-subheading-opacity {\n .mdui-typo-subheading();\n}\n.mdui-typo-subheading-opacity {\n ._mdui-typo-subheading-opacity();\n}\n\n.mdui-typo-body-2,\n.mdui-typo-body-2-opacity {\n .mdui-typo-body-2();\n}\n.mdui-typo-body-2-opacity {\n ._mdui-typo-body-2-opacity();\n}\n\n.mdui-typo-body-1,\n.mdui-typo-body-1-opacity {\n .mdui-typo-body-1();\n}\n.mdui-typo-body-1-opacity {\n ._mdui-typo-body-1-opacity();\n}\n\n.mdui-typo-caption,\n.mdui-typo-caption-opacity {\n .mdui-typo-caption();\n}\n.mdui-typo-caption-opacity {\n ._mdui-typo-caption-opacity();\n}\n","._mdui-typo-display-4-opacity() {\n opacity: 0.54;\n}\n.mdui-typo-display-4(@opacity: false) {\n font-weight: 300;\n font-size: 112px;\n letter-spacing: -0.04em;\n & when (@opacity = true) {\n ._mdui-typo-display-4-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-display-3-opacity() {\n opacity: 0.54;\n}\n.mdui-typo-display-3(@opacity: false) {\n font-weight: 400;\n font-size: 56px;\n letter-spacing: -0.02em;\n & when (@opacity = true) {\n ._mdui-typo-display-3-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-display-2-opacity() {\n opacity: 0.54;\n}\n.mdui-typo-display-2(@opacity: false) {\n font-weight: 400;\n font-size: 45px;\n letter-spacing: 0;\n & when (@opacity = true) {\n ._mdui-typo-display-2-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-display-1-opacity() {\n opacity: 0.54;\n}\n.mdui-typo-display-1(@opacity: false) {\n font-weight: 400;\n font-size: 34px;\n letter-spacing: 0;\n & when (@opacity = true) {\n ._mdui-typo-display-1-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-headline-opacity() {\n opacity: 0.87;\n}\n.mdui-typo-headline(@opacity: false) {\n font-weight: 400;\n font-size: 24px;\n -moz-osx-font-smoothing: grayscale;\n & when (@opacity = true) {\n ._mdui-typo-headline-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-title-opacity() {\n opacity: 0.87;\n}\n.mdui-typo-title(@opacity: false) {\n font-weight: 500;\n font-size: 20px;\n letter-spacing: 0.02em;\n & when (@opacity = true) {\n ._mdui-typo-title-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-subheading-opacity() {\n opacity: 0.87;\n}\n.mdui-typo-subheading(@opacity: false) {\n font-weight: 400;\n font-size: 16px;\n letter-spacing: 0.04em;\n & when (@opacity = true) {\n ._mdui-typo-subheading-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-body-2-opacity() {\n opacity: 0.87;\n}\n.mdui-typo-body-2(@opacity: false) {\n font-weight: 500;\n font-size: 14px;\n letter-spacing: 0.04em;\n & when (@opacity = true) {\n ._mdui-typo-body-2-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-body-1-opacity() {\n opacity: 0.87;\n}\n.mdui-typo-body-1(@opacity: false) {\n font-weight: 400;\n font-size: 14px;\n letter-spacing: 0.04em;\n & when (@opacity = true) {\n ._mdui-typo-body-1-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n\n._mdui-typo-caption-opacity() {\n opacity: 0.54;\n}\n.mdui-typo-caption(@opacity: false) {\n font-weight: 400;\n font-size: 12px;\n letter-spacing: 0.08em;\n & when (@opacity = true) {\n ._mdui-typo-caption-opacity();\n }\n & when (isnumber(@opacity)) {\n opacity: @opacity;\n }\n}\n","/**\n * =============================================================================\n * ************ Typography 文章排版 ************\n * =============================================================================\n */\n\n.mdui-typo {\n line-height: 1.8;\n word-wrap: break-word;\n\n address, caption, cite, code, dfn, th {\n font-weight: 400;\n font-style: normal;\n }\n\n caption, th {\n text-align: left;\n }\n\n q::before, q::after {\n content: '';\n }\n\n pre, code, kbd, samp, pre tt {\n font-family: Consolas, Courier, 'Courier New', monospace;\n }\n\n figcaption {\n color: @color-black-secondary;\n font-size: 80%;\n }\n\n [draggable],\n [draggable=\"true\"] {\n cursor: move;\n }\n\n [draggable=\"false\"] {\n cursor: inherit;\n }\n\n p, pre, ul, ol, dl, form, hr, figure, table, .mdui-table, .mdui-table-fluid {\n margin: 0 0 1.2em 0;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n /* a */\n a {\n .mdui-text-color(@color-accent-default-name, a200);\n\n position: relative;\n display: inline-block;\n overflow: hidden;\n text-decoration: none;\n vertical-align: top;\n outline: none;\n\n &::before {\n position: absolute;\n top: auto;\n bottom: 1px;\n left: 0;\n width: 100%;\n height: 1px;\n background-color: @color-default-a200;\n transform: scaleX(0);\n backface-visibility: hidden;\n transition: all 0.2s;\n content: ' ';\n }\n\n &:hover::before,\n &:focus::before {\n transform: scaleX(1);\n }\n }\n\n /* small */\n small {\n font-size: 80%;\n }\n\n /* blockquote */\n blockquote {\n margin: 1em 3em 1em 2em;\n padding-left: 1em;\n font-weight: 400;\n border-left: 4px solid @color-black-divider;\n @media only screen and (max-width: @screen-xs-max) {\n margin: 1em 0;\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n\n footer {\n color: @color-black-secondary;\n font-size: 86%;\n }\n }\n\n /* mark */\n mark {\n margin: 0 5px;\n padding: 2px;\n background: #fffdd1;\n border-bottom: 1px solid #ffedce;\n }\n\n /* h1 - h6 */\n h1, h2, h3, h4, h5, h6 {\n margin-top: 1.2em;\n margin-bottom: 0.6em;\n color: inherit;\n font-weight: 400;\n font-family: inherit;\n line-height: 1.35;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n small {\n color: @color-black-secondary;\n font-weight: 400;\n font-size: 65%;\n line-height: 1;\n }\n }\n h1 {\n font-size: 2em;\n }\n h2 {\n font-size: 1.8em;\n }\n h3 {\n font-size: 1.6em;\n }\n h4 {\n font-size: 1.4em;\n }\n h5 {\n font-size: 1.2em;\n }\n h6 {\n font-size: 1.1em;\n }\n\n /* code */\n code {\n padding: 2px 6px;\n color: #c7254e;\n background-color: #f7f7f9;\n border-radius: 2px;\n }\n\n /* pre code */\n pre code {\n padding: 0;\n color: inherit;\n font-size: inherit;\n line-height: 1.7;\n background-color: transparent;\n border-radius: 0;\n }\n\n /* abbr */\n abbr[title] {\n text-decoration: none;\n border-bottom: 1px dotted;\n cursor: help;\n }\n\n /* ins */\n ins {\n text-decoration: none;\n border-bottom: 1px solid ;\n }\n\n /* u */\n u {\n text-decoration: none;\n border-bottom: 1px solid;\n }\n\n /* del */\n del {\n text-decoration: line-through;\n }\n\n /* hr */\n hr {\n height: 10px;\n margin-bottom: 0.8em;\n border: none;\n border-bottom: 1px solid @color-black-divider;\n }\n\n /* pre */\n pre {\n padding: 12px 16px;\n overflow-x: auto;\n border: 1px solid @color-black-divider;\n border-radius: 2px;\n -webkit-overflow-scrolling: touch;\n }\n\n /* kbd */\n kbd {\n padding: 2px 6px;\n color: #fff;\n font-size: 90%;\n background-color: #333;\n border-radius: 2px;\n }\n\n /* ul / ol */\n ul {\n padding-left: 2em;\n list-style: disc;\n }\n ol {\n padding-left: 2em;\n list-style: decimal;\n }\n li ul,\n li ol {\n margin: 0.8em 0;\n }\n li ul {\n list-style: circle;\n }\n\n /* img */\n img {\n max-width: 100%;\n }\n\n figure {\n text-align: center;\n\n figcaption {\n margin-top: 8px;\n color: #999;\n font-size: 14px;\n }\n\n figcaption:empty::before {\n z-index: -1;\n color: #bfbfbf;\n cursor: text;\n content: attr(placeholder);\n }\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Typo 强调色 ************\n * =============================================================================\n */\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n .mdui-typo {\n a {\n .mdui-text-color(@colorName, a200);\n\n &::before {\n .mdui-background-color(@colorName, a200);\n }\n }\n }\n }\n\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Typo dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-typo {\n\n blockquote {\n border-left-color: @color-white-divider;\n\n footer {\n color: @color-white-secondary;\n }\n }\n\n figcaption {\n color: @color-white-secondary;\n }\n\n mark {\n background: #aaa;\n border-bottom-color: #bbb;\n }\n\n h1, h2, h3, h4, h5, h6 {\n small {\n color: @color-white-secondary;\n }\n }\n\n code {\n color: @color-red-100;\n background-color: #424242;\n }\n\n pre {\n background: #424242;\n border-color: @color-white-divider;\n }\n\n kbd {\n background: #424242;\n }\n\n hr {\n border-color: @color-white-divider;\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Grid 网格系统 ************\n * =============================================================================\n */\n\n@_screen-col-1: 8.333333%;\n@_screen-col-2: 16.666667%;\n@_screen-col-3: 25%;\n@_screen-col-4: 33.333333%;\n@_screen-col-5: 41.666667%;\n@_screen-col-6: 50%;\n@_screen-col-7: 58.333333%;\n@_screen-col-8: 66.666667%;\n@_screen-col-9: 75%;\n@_screen-col-10: 83.333333%;\n@_screen-col-11: 91.666667%;\n@_screen-col-12: 100%;\n\n// 等分列\n@_screen-average-1: 100%;\n@_screen-average-2: 50%;\n@_screen-average-3: 33.333333%;\n@_screen-average-4: 25%;\n@_screen-average-5: 20%;\n@_screen-average-6: 16.666667%;\n@_screen-average-7: 14.285714%;\n@_screen-average-8: 12.5%;\n@_screen-average-9: 11.111111%;\n@_screen-average-10: 10%;\n@_screen-average-11: 9.090909%;\n@_screen-average-12: 8.333333%;\n\n//间隔\n@grid-gap-8: 8px;\n@grid-gap-16: 16px;\n@grid-gap-24: 24px;\n@grid-gap-40: 40px;\n\n// 生成列、列偏移\n._grid_col_loop(@cols, @screen) when (@cols > 0) {\n ._grid_col_loop((@cols - 1), @screen);\n\n @widthName: '_screen-col-@{cols}';\n\n // 列宽度\n .mdui-col-@{screen}-@{cols} {\n float: left;\n width: @@widthName;\n }\n\n // 列偏移\n .mdui-col-offset-@{screen}-@{cols} {\n margin-left: @@widthName;\n }\n\n // 等分列\n @averageName: '_screen-average-@{cols}';\n .mdui-row-@{screen}-@{cols} .mdui-col {\n float: left;\n width: @@averageName;\n }\n}\n\n.mdui-container,\n.mdui-container-fluid {\n box-sizing: border-box;\n margin-right: auto;\n margin-left: auto;\n padding-right: @grid-gap-16 / 2;\n padding-left: @grid-gap-16 / 2;\n &::after{\n display: table;\n clear: both;\n content: '';\n }\n}\n\n.mdui-container {\n width: 96%;\n max-width: 1280px;\n @media (min-width: @screen-sm-min) {\n width: 94%;\n }\n @media (min-width: @screen-md-min) {\n width: 92%;\n }\n}\n\n.mdui-row,\n[class*=\"mdui-row-\"] {\n margin-right: -@grid-gap-16 / 2;\n margin-left: -@grid-gap-16 / 2;\n &::after {\n display: table;\n clear: both;\n content: '';\n }\n}\n\n[class*=\"mdui-col-xs-\"],\n[class*=\"mdui-col-sm-\"],\n[class*=\"mdui-col-md-\"],\n[class*=\"mdui-col-lg-\"],\n[class*=\"mdui-col-xl-\"],\n.mdui-col {\n position: relative;\n box-sizing: border-box;\n min-height: 1px;\n padding-right: @grid-gap-16 / 2;\n padding-left: @grid-gap-16 / 2;\n}\n\n/* 取消列间距 */\n.mdui-row-gapless {\n .mdui-col,\n [class*=\"mdui-col-xs-\"],\n [class*=\"mdui-col-sm-\"],\n [class*=\"mdui-col-md-\"],\n [class*=\"mdui-col-lg-\"],\n [class*=\"mdui-col-xl-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n\n // 嵌套元素的内补\n .mdui-row,\n [class*=\"mdui-row-\"] {\n margin-right: 0;\n margin-left: 0;\n }\n}\n\n._grid_col_loop(12, ~\"xs\");\n\n@media (min-width: @screen-sm-min) {\n ._grid_col_loop(12, ~\"sm\");\n}\n\n@media (min-width: @screen-md-min) {\n ._grid_col_loop(12, ~\"md\");\n}\n\n@media (min-width: @screen-lg-min) {\n ._grid_col_loop(12, ~\"lg\");\n}\n\n@media (min-width: @screen-xl-min) {\n ._grid_col_loop(12, ~\"xl\");\n}","// 阴影\n.mdui-shadow(@depth) {\n @shadow: 'shadow-depth-@{depth}';\n\n box-shadow: @@shadow;\n}\n\n// hover 时添加阴影\n.mdui-hoverable(@depth: 8) {\n transition: box-shadow 0.25s @animation-curve-default;\n will-change: box-shadow;\n\n &:hover,\n &:focus {\n .mdui-shadow(@depth);\n }\n}\n","/**\n * =============================================================================\n * ************ Shadow 阴影 ************\n * =============================================================================\n */\n\n._md_shadow(@shadow) when (@shadow > -1) {\n ._md_shadow(@shadow - 1);\n\n .mdui-shadow-@{shadow} {\n .mdui-shadow(@shadow) !important;\n }\n}\n\n._md_shadow(24);\n\n/* 鼠标悬浮时加深阴影 */\n.mdui-hoverable {\n .mdui-hoverable(8);\n}\n","/**\n * =============================================================================\n * ************ Headroom ************\n * =============================================================================\n */\n\n .mdui-headroom {\n transition: all .3s @animation-curve-default !important;\n}\n\n/* 固定在顶部时 */\n.mdui-headroom-pinned-top {\n transform: translate3d(0, 0, 0) !important;\n}\n\n/* 在顶部隐藏时 */\n.mdui-headroom-unpinned-top {\n transform: translate3d(0, -100%, 0) !important;\n .mdui-shadow(0) !important;\n}\n\n/* 固定在底部时 */\n.mdui-headroom-pinned-down {\n transform: translate3d(0, 0, 0) !important;\n}\n\n/* 在底部隐藏时 */\n.mdui-headroom-unpinned-down {\n transform: translate3d(0, 100%, 0) !important;\n .mdui-shadow(0) !important;\n}\n\n/* 固定应用栏中的工具栏 */\n.mdui-headroom-pinned-toolbar {\n transform: translate3d(0, 0, 0) !important;\n}\n\n/* 隐藏应用栏中的工具栏 */\n.mdui-headroom-unpinned-toolbar {\n transform: translate3d(0, -@appbar-height-xs-portrait, 0) !important;\n\n // 平板和桌面\n @media (min-width: @screen-sm-min) {\n transform: translate3d(0, -@appbar-height-sm, 0) !important;\n }\n\n // 手机横屏\n @media (orientation: landscape) and (max-width: @screen-xs-max-landscape) {\n transform: translate3d(0, -@appbar-height-xs-landscape, 0) !important;\n }\n}\n","/**\n * =============================================================================\n * ************ Collapse 折叠插件 ************\n * =============================================================================\n */\n\n .mdui-collapse-item-header {\n // 图标,打开时翻转 180 度\n .mdui-collapse-item-arrow,\n &.mdui-collapse-item-arrow {\n transform: rotate(0);\n transition: transform .3s @animation-curve-default;\n will-change: transform;\n }\n}\n\n.mdui-collapse-item-body {\n height: 0;\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 0;\n padding-bottom: 0;\n overflow: hidden;\n transition: all .3s @animation-curve-default;\n will-change: height;\n\n // 使子列表缩进\n .mdui-list-item {\n padding-left: 72px;\n }\n}\n\n.mdui-collapse-item-open {\n &>.mdui-collapse-item-header {\n .mdui-collapse-item-arrow,\n &.mdui-collapse-item-arrow {\n transform: rotate(180deg);\n }\n }\n\n &>.mdui-collapse-item-body {\n height: auto;\n }\n}\n","/**\n * =============================================================================\n * ************ Expansion panel 可扩展面板 ************\n * =============================================================================\n */\n\n/* 可扩展面板 */\n.mdui-panel {\n box-sizing: border-box;\n width: 100%;\n}\n\n/* 面板项 */\n.mdui-panel-item {\n color: @color-black-text;\n background-color: #fff;\n transition: margin .3s @animation-curve-default;\n will-change: margin;\n .mdui-divider-bottom-dark();\n .mdui-shadow(2);\n\n &:last-child {\n border-bottom: none;\n }\n}\n\n/* 面板头部 */\n.mdui-panel-item-header {\n position: relative;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 48px;\n padding: 0 24px;\n font-size: 15px;\n cursor: pointer;\n transition: all .3s @animation-curve-default;\n will-change: height, background-color;\n .mdui-text-truncate();\n\n &:active {\n background-color: @color-grey-200;\n }\n}\n\n/* 面板项标题 */\n.mdui-panel-item-title {\n box-sizing: border-box;\n width: 36%;\n min-width: 36%;\n padding-right: 16px;\n font-weight: 500;\n .mdui-text-truncate();\n}\n\n/* 面板项内容 */\n.mdui-panel-item-summary {\n flex-grow: 1;\n box-sizing: border-box;\n padding-right: 16px;\n color: @color-black-secondary;\n .mdui-text-truncate();\n}\n\n/* 展开收起的图标 */\n.mdui-panel-item-arrow {\n position: absolute;\n top: 12px;\n right: 24px;\n color: @color-black-icon;\n transform: rotate(0);\n transition: all .3s @animation-curve-default;\n user-select: none;\n will-change: transform, top;\n}\n\n.mdui-panel-item-summary + .mdui-panel-item-arrow {\n position: relative;\n top: 0 !important;\n right: 0;\n}\n\n/* 面板项内容 */\n.mdui-panel-item-body {\n height: 0;\n padding: 0 24px;\n overflow: hidden;\n transition: height .3s @animation-curve-default;\n will-change: height;\n .mdui-clearfix();\n\n &::after {\n height: 16px;\n }\n}\n\n/* 面板项操作栏 */\n.mdui-panel-item-actions {\n display: block;\n width: 100%;\n margin: 16px -24px 0 -24px;\n padding: 16px 24px 0 24px;\n text-align: right;\n .mdui-divider-top-dark();\n\n .mdui-btn {\n margin-left: 8px;\n\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n/* 打开状态的面板项 */\n.mdui-panel-item-open {\n height: auto;\n margin-top: 16px;\n margin-bottom: 16px;\n\n // 打开状态的面板头部更高\n &>.mdui-panel-item-header {\n height: 64px;\n\n .mdui-panel-item-arrow {\n top: 20px;\n transform: rotate(180deg);\n }\n }\n\n &>.mdui-panel-item-body {\n height: auto;\n }\n}\n\n/* 使打开项上下没有边距 */\n.mdui-panel-gapless {\n .mdui-shadow(2);\n\n .mdui-panel-item {\n .mdui-shadow(0);\n }\n\n .mdui-panel-item-open {\n margin-top: 0;\n margin-bottom: 0;\n }\n}\n\n/* 弹出面板 */\n.mdui-panel-popout {\n .mdui-panel-item-open {\n margin-right: -16px;\n margin-left: -16px;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Expansion panel dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-panel-item {\n color: #fff;\n background-color: @layout-dark-color-3;\n .mdui-divider-bottom-light();\n\n &:last-child {\n border-bottom: none;\n }\n }\n .mdui-panel-item-header {\n &:active {\n background-color: @color-grey-800;\n }\n }\n .mdui-panel-item-summary {\n color: @color-white-secondary;\n }\n\n /* stylelint-disable-next-line */\n .mdui-panel-item-arrow {\n color: @color-white-icon;\n }\n .mdui-panel-item-actions {\n .mdui-divider-top-light();\n }\n});\n","// 分割线\n// =============================================================================\n\n// 添加边框作为分割线,亮色的分割线,用于深色背景\n.mdui-divider-top-light() {\n border-top: 1px solid @color-white-divider;\n}\n.mdui-divider-bottom-light() {\n border-bottom: 1px solid @color-white-divider;\n}\n.mdui-divider-left-light() {\n border-left: 1px solid @color-white-divider;\n}\n.mdui-divider-right-light() {\n border-right: 1px solid @color-white-divider;\n}\n\n// 添加边框作为分割线,深色的分割线,用于浅色背景\n.mdui-divider-top-dark() {\n border-top: 1px solid @color-black-divider;\n}\n.mdui-divider-bottom-dark() {\n border-bottom: 1px solid @color-black-divider;\n}\n.mdui-divider-left-dark() {\n border-left: 1px solid @color-black-divider;\n}\n.mdui-divider-right-dark() {\n border-right: 1px solid @color-black-divider;\n}\n","/**\n * =============================================================================\n * ************ Table 表格 ************\n * =============================================================================\n */\n\n@import '../selection_control/checkbox';\n\n.mdui-table {\n position: relative;\n width: 100%;\n background-color: #fff;\n border: 1px solid @color-black-divider;\n border-bottom: none;\n border-collapse: separate;\n border-spacing: 0;\n .mdui-shadow(2);\n\n tbody {\n tr {\n position: relative;\n transition: background-color 0.28s @animation-curve-default;\n }\n }\n\n th, td {\n position: relative;\n box-sizing: border-box;\n padding: 12px 28px;\n text-align: left;\n vertical-align: middle;\n .mdui-divider-bottom-dark();\n }\n\n th {\n color: @color-black-secondary;\n font-weight: 700;\n font-size: 13px;\n line-height: 32px;\n .mdui-text-truncate();\n }\n\n td {\n color: @color-black-text;\n font-size: 14px;\n line-height: 24px;\n }\n}\n\n/* 每一行前面的复选框 */\n.mdui-table-cell-checkbox {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n padding-left: 24px !important;\n\n .mdui-checkbox {\n margin-top: 7px;\n }\n\n & + td,\n & + th {\n padding-left: 6px !important;\n }\n}\nth.mdui-table-cell-checkbox {\n .mdui-checkbox {\n margin-top: 11px;\n }\n}\n\n.mdui-table {\n th, td {\n &:last-child {\n padding-right: 24px;\n }\n &:first-child {\n padding-right: 0;\n padding-left: 24px\n }\n &:nth-child(2) {\n padding-left: 24px;\n }\n }\n}\n\n/* 鼠标悬浮时行背景加深 */\n.mdui-table-hoverable {\n tbody tr {\n &:hover {\n background-color: @color-grey-200;\n }\n }\n}\n\n/* 表格放到该元素内,使表格产生滚动条时只在该元素内滚动 */\n.mdui-table-fluid {\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n border: 1px solid @color-black-divider;\n border-bottom: none;\n .mdui-shadow(2);\n\n .mdui-table {\n .mdui-shadow(0);\n\n margin: 0;\n border: none;\n }\n}\n\n/* 数字列,右对齐 */\n.mdui-table-col-numeric {\n text-align: right !important;\n}\n\n/* 行处于选中状态 */\n.mdui-table-row-selected {\n background-color: @color-grey-100;\n}\n\n\n/**\n * =============================================================================\n * ************ Table dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-table {\n background-color: @layout-dark-color-3;\n border: 1px solid @color-white-divider;\n border-bottom: none;\n\n th, td {\n .mdui-divider-bottom-light();\n }\n\n th {\n color: @color-white-secondary;\n }\n\n td {\n color: @color-white-text;\n }\n }\n\n .mdui-table-hoverable {\n tbody tr {\n &:hover {\n background-color: @color-grey-700;\n }\n }\n }\n\n .mdui-table-fluid {\n border: 1px solid @color-white-divider;\n border-bottom: none;\n\n .mdui-table {\n .mdui-shadow(0);\n\n border: none;\n }\n }\n\n .mdui-table-row-selected {\n background-color: @color-grey-800;\n }\n});\n","/**\n * =============================================================================\n * ************ Divider 分割线 ************\n * =============================================================================\n */\n\n.mdui-divider,\n.mdui-divider-light,\n.mdui-divider-dark,\n.mdui-divider-inset,\n.mdui-divider-inset-light,\n.mdui-divider-inset-dark {\n height: 1px;\n margin: -1px 0 0 0;\n border: none;\n}\n\n.mdui-divider-inset,\n.mdui-divider-inset-light,\n.mdui-divider-inset-dark {\n margin-left: 72px;\n}\n\n.mdui-divider,\n.mdui-divider-inset {\n background-color: @color-black-divider;\n}\n\n.mdui-divider-light,\n.mdui-divider-inset-light {\n background-color: @color-white-divider;\n}\n\n.mdui-divider-dark,\n.mdui-divider-inset-dark {\n background-color: @color-black-divider;\n}\n\n/**\n * =============================================================================\n * ************ Divider dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-divider,\n .mdui-divider-inset {\n background-color: @color-white-divider;\n }\n});\n","/**\n * =============================================================================\n * ************ 涟漪动画 ************\n * =============================================================================\n */\n\n.mdui-ripple {\n position: relative;\n overflow: hidden;\n cursor: pointer;\n user-select: none;\n}\n\n/* Ripple */\n.mdui-ripple-wave {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 1;\n margin: 0;\n padding: 0;\n font-size: 0;\n background-color: rgba(0, 0, 0, 0.1);\n border-radius: 50%;\n transform: translate3d(0, 0, 0) scale(0);\n transition-duration: 1400ms;\n pointer-events: none;\n}\n\n/* 有背景色的默认使用白色涟漪 */\n.mdui-ripple[class*=\"mdui-color-\"] {\n .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3);\n }\n}\n\n/* 白色涟漪 */\n.mdui-ripple-white .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3) !important;\n}\n\n/* 黑色涟漪 */\n.mdui-ripple-black .mdui-ripple-wave {\n background-color: rgba(0, 0, 0, 0.1) !important;\n}\n\n.mdui-ripple-wave-fill {\n opacity: 0.35;\n transition-duration: 300ms;\n}\n\n.mdui-ripple-wave-out {\n opacity: 0;\n transition-duration: 600ms;\n}\n\n\n/**\n * =============================================================================\n * ************ Ripple 颜色 ************\n * =============================================================================\n */\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n @colorName: extract(@globalPrimaryColors, @counter-color);\n\n // 指定涟漪颜色\n .mdui-ripple-@{colorName} when not (@colorName = null) {\n .mdui-ripple-wave {\n @color: 'color-@{colorName}-500';\n\n background-color: rgba(red(@@color), green(@@color), blue(@@color), 0.3) !important;\n }\n }\n\n }\n .loop-primary-theme(length(@globalPrimaryColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Ripple dark ************\n * =============================================================================\n */\n.layout-theme({\n // 深色主题下使用白色涟漪\n .mdui-ripple-wave {\n background-color: rgba(255, 255, 255, 0.3);\n }\n});\n","/**\n * =============================================================================\n * ************ Text Field 文本框 ************\n * =============================================================================\n */\n\n/* 文本框外层 */\n.mdui-textfield {\n position: relative;\n padding-top: 16px;\n padding-bottom: 8px;\n overflow: hidden;\n}\n\n.mdui-textfield-has-bottom {\n padding-bottom: 28px;\n}\n\n/* 输入框 */\n.mdui-textfield-input {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 36px;\n margin: 0;\n padding: 8px 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n font-size: 16px;\n font-family: inherit;\n line-height: 20px;\n background: none;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, .42);\n border-radius: 0;\n outline: none;\n box-shadow: none;\n transition-timing-function: @animation-curve-default;\n transition-duration: .2s;\n transition-property: border-bottom-color, padding-right, box-shadow;\n appearance: none;\n resize: none;\n\n &::-webkit-input-placeholder {\n color: inherit;\n opacity: 0.42;\n }\n\n &:not([disabled]):hover {\n border-bottom: 1px solid rgba(0, 0, 0, .87);\n box-shadow: 0 1px 0 0 rgba(0, 0, 0, .87);\n cursor: pointer;\n }\n\n &[rows] {\n height: auto !important;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n\n/* 文本框 label */\n.mdui-textfield-label {\n display: block;\n width: 100%;\n color: rgba(0, 0, 0, 0.54);\n font-size: 16px;\n transform: scale(0.75) translateY(0);\n transform-origin: left;\n transition: all .2s;\n pointer-events: none;\n}\n\n/* 表单验证错误提示、帮助文本提示 */\n.mdui-textfield-error,\n.mdui-textfield-helper {\n position: absolute;\n bottom: 8px;\n height: 12px;\n font-size: 12px;\n line-height: 12px;\n .mdui-text-truncate();\n}\n\n.mdui-textfield-error {\n color: rgba(red(@color-red-a400), green(@color-red-a400), blue(@color-red-a400), .87);\n visibility: hidden;\n}\n\n.mdui-textfield-helper {\n color: rgba(0, 0, 0, 0.54);\n}\n\n\n/* 表单中的图标\n ========== */\n.mdui-textfield {\n .mdui-icon {\n position: absolute;\n bottom: 8px;\n padding: 6px;\n color: @color-black-icon;\n\n ~ .mdui-textfield-label,\n ~ .mdui-textfield-input,\n ~ .mdui-textfield-error,\n ~ .mdui-textfield-helper,\n ~ .mdui-textfield-flex-wrap {\n /* stylelint-disable-next-line */\n width: calc(~\"100% - 56px\");\n margin-left: 56px;\n }\n }\n}\n\n.mdui-textfield-has-bottom {\n .mdui-icon {\n bottom: 28px;\n }\n}\n\n/* 聚焦状态的文本框\n ============= */\n.mdui-textfield-focus {\n\n .mdui-textfield-input,\n .mdui-textfield-input:hover {\n border-bottom-color: @color-default-a700;\n box-shadow: 0 1px 0 0 @color-default-a700;\n }\n\n .mdui-textfield-label,\n .mdui-icon {\n color: rgba(red(@color-default-a700), green(@color-default-a700), blue(@color-default-a700), .87);\n }\n}\n\n/* 含有浮动标签的文本框\n ================ */\n.mdui-textfield-floating-label {\n\n .mdui-textfield-label {\n color: rgba(0, 0, 0, 0.35);\n transform: scale(1) translateY(27px);\n }\n\n &.mdui-textfield-focus,\n &.mdui-textfield-not-empty {\n .mdui-textfield-label {\n color: rgba(0, 0, 0, 0.65);\n transform: scale(0.75) translateY(0);\n }\n }\n &.mdui-textfield-focus {\n .mdui-textfield-label {\n .mdui-text-color(@color-accent-default-name);\n }\n }\n}\n\n/* 可展开文本框,默认向右展开\n ========== */\n.mdui-textfield-expandable {\n width: 36px;\n min-height: 36px;\n padding: 1px 0;\n transition: width .3s @animation-curve-default;\n\n .mdui-icon {\n bottom: 0;\n padding: 0;\n }\n\n .mdui-textfield-input {\n /* stylelint-disable-next-line */\n width: calc(~\"100% - 36px\");\n margin-left: 36px;\n padding-right: 0;\n }\n\n .mdui-textfield-icon {\n position: absolute;\n top: 0;\n left: 0;\n }\n\n .mdui-textfield-close {\n position: absolute;\n top: 0;\n right: 0;\n transform: scale(0);\n }\n\n &.mdui-textfield-expanded {\n width: 100%;\n\n .mdui-textfield-input {\n padding-right: 36px;\n }\n\n .mdui-textfield-close {\n transform: scale(1);\n }\n }\n}\n\n/* 表单验证不通过\n =========== */\n.mdui-textfield-invalid,\n.mdui-textfield-invalid-html5 {\n\n .mdui-textfield-input,\n &.mdui-textfield-focus .mdui-textfield-input {\n border-bottom-color: @color-red-a400 !important;\n box-shadow: 0 1px 0 0 @color-red-a400 !important;\n }\n\n .mdui-textfield-label {\n color: @color-red-a400 !important;\n }\n\n &.mdui-textfield-floating-label {\n .mdui-textfield-label {\n color: rgba(red(@color-red-a400), green(@color-red-a400), blue(@color-red-a400), 0.35) !important;\n }\n\n &.mdui-textfield-focus,\n &.mdui-textfield-not-empty {\n .mdui-textfield-label {\n color: @color-red-a400 !important;\n }\n }\n }\n\n .mdui-textfield-error {\n visibility: visible;\n\n &+.mdui-textfield-helper {\n visibility: hidden;\n }\n }\n}\n\n/* 禁用表单\n ====== */\n.mdui-textfield-disabled {\n .mdui-textfield-label,\n .mdui-textfield-input::-webkit-input-placeholder {\n color: @color-black-disabled;\n }\n\n .mdui-textfield-input {\n color: rgba(0, 0, 0, .42);\n cursor: default;\n }\n\n .mdui-textfield-input {\n border-bottom: 1px dashed rgba(0, 0, 0, .42);\n }\n}\n\n/* 字数统计\n ====== */\n.mdui-textfield-counter {\n position: absolute;\n right: 8px;\n bottom: 8px;\n height: 12px;\n color: @color-black-secondary;\n font-size: 12px;\n line-height: 12px;\n}\n\n\n/**\n * =============================================================================\n * ************ Textfield dark ************\n * =============================================================================\n */\n.layout-theme({\n // 输入框颜色\n .mdui-textfield-input {\n color: #fff;\n border-bottom-color: rgba(255, 255, 255, .7);\n\n &::-webkit-input-placeholder {\n color: rgba(255, 255, 255, .5);\n }\n\n &:not([disabled]):hover {\n border-bottom-color: rgba(255, 255, 255, 1);\n box-shadow: 0 1px 0 0 rgba(255, 255, 255, 1);\n }\n }\n\n // 图标颜色\n .mdui-textfield {\n .mdui-icon {\n color: rgba(255, 255, 255, 0.7);\n }\n }\n\n // 标签颜色\n .mdui-textfield-label {\n color: rgba(255, 255, 255, 0.7);\n }\n\n .mdui-textfield-floating-label {\n .mdui-textfield-label {\n color: rgba(255, 255, 255, 0.35);\n }\n }\n\n // 错误文本颜色\n .mdui-textfield-error {\n color: @color-red-a400;\n }\n\n // 帮助文本颜色\n .mdui-textfield-helper {\n color: rgba(255, 255, 255, 0.7);\n }\n\n // 字数统计颜色\n .mdui-textfield-counter {\n color: @color-white-secondary;\n }\n\n // 聚焦状态\n .mdui-textfield-focus {\n\n .mdui-textfield-input,\n .mdui-textfield-input:hover {\n border-bottom-color: @color-default-a200;\n box-shadow: 0 1px 0 0 @color-default-a200;\n }\n\n .mdui-textfield-label {\n color: @color-default-a200;\n }\n }\n\n // 禁用状态\n .mdui-textfield-disabled {\n .mdui-textfield-label,\n .mdui-textfield-input::-webkit-input-placeholder {\n color: @color-white-disabled;\n }\n\n .mdui-textfield-input {\n color: @color-white-disabled;\n }\n\n .mdui-textfield-input {\n border-bottom-color: rgba(255, 255, 255, .7);\n }\n }\n});\n\n\n/**\n * =============================================================================\n * ************ Textfield 强调色 ************\n * =============================================================================\n */\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n @colorA700: 'color-@{colorName}-a700';\n @colorA200: 'color-@{colorName}-a200';\n\n .mdui-textfield-focus {\n\n .mdui-textfield-input {\n border-bottom-color: @@colorA700;\n box-shadow: 0 1px 0 0 @@colorA700;\n }\n\n .mdui-textfield-label,\n .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-icon {\n color: rgba(red(@@colorA700), green(@@colorA700), blue(@@colorA700), .87);\n }\n }\n\n // 暗色主题\n & {\n .dark-mode() {\n .mdui-textfield-focus {\n\n .mdui-textfield-input {\n border-bottom-color: @@colorA200;\n box-shadow: 0 1px 0 0 @@colorA200;\n }\n\n .mdui-textfield-label,\n .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,\n .mdui-icon {\n color: @@colorA200;\n }\n }\n }\n\n & when (@globalLayoutDark = true) {\n &.mdui-theme-layout-dark {\n .dark-mode();\n }\n }\n\n & when (@globalLayoutAuto = true) {\n @media (prefers-color-scheme: dark) {\n &.mdui-theme-layout-auto {\n .dark-mode();\n }\n }\n }\n }\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n","/**\n * =============================================================================\n * ************ Checkbox 复选框 ************\n * =============================================================================\n */\n\n.mdui-checkbox {\n position: relative;\n display: inline-block;\n height: 36px;\n padding-left: 36px;\n line-height: 36px;\n cursor: pointer;\n user-select: none;\n\n // 隐藏系统 input 标签,用自定义的图标代替\n input[type=\"checkbox\"] {\n position: absolute;\n width: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n }\n}\n\n/* 透明的圆形,用于生成圆形阴影 */\n.mdui-checkbox-icon {\n position: absolute;\n top: 9px;\n left: 0;\n display: inline-block;\n width: 18px;\n height: 18px;\n vertical-align: middle;\n background-color: transparent;\n border: none;\n border-radius: 18px;\n transition: box-shadow .14s @animation-curve-default;\n\n // 图标的边框和背景\n &::after {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid @color-black-icon;\n border-radius: 2px;\n transition: all .3s @animation-curve-default;\n content: ' ';\n }\n\n // 选中状态图标内部的勾\n &::before {\n position: absolute;\n top: 2px;\n left: 0;\n z-index: 1;\n box-sizing: border-box;\n width: 8px;\n height: 13px;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n transform: rotateZ(37deg) scale(0);\n transform-origin: 100% 100%;\n opacity: 0;\n transition: all .3s @animation-curve-default;\n content: ' ';\n }\n}\n\n/* 各种状态的图标 */\n.mdui-checkbox input[type=\"checkbox\"] {\n\n // 选中状态的图标\n &:checked + .mdui-checkbox-icon {\n &::after {\n background-color: @color-default-a200;\n border-color: @color-default-a200;\n }\n\n &::before {\n transform: rotateZ(37deg) scale(1);\n opacity: 1;\n }\n }\n\n // 不确定状态的图标\n &:indeterminate + .mdui-checkbox-icon {\n &::after {\n background-color: @color-default-a200;\n border-color: @color-default-a200;\n }\n\n &::before {\n top: 8px;\n left: 3px;\n width: 12px;\n height: 0;\n border-right: none;\n border-bottom: 2px solid #fff;\n border-radius: 1px;\n transform: rotateZ(0) scale(1);\n opacity: 1;\n }\n }\n\n // 禁用状态的图标\n &:disabled + .mdui-checkbox-icon {\n &::after {\n border-color: @color-black-icon-disabled;\n }\n }\n\n // 禁用且选中状态\n &:disabled:checked + .mdui-checkbox-icon,\n &:disabled:indeterminate + .mdui-checkbox-icon {\n &::after {\n background-color: @color-black-icon-disabled !important;\n border-color: transparent !important;\n }\n }\n}\n\n/* 阴影 */\n.mdui-checkbox:active input[type=\"checkbox\"],\n.mdui-checkbox input[type=\"checkbox\"]:focus {\n // 未选中、禁用时 按下的阴影\n & + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.1);\n }\n\n // 已选中时按下的阴影\n &:not(:disabled):checked,\n &:not(:disabled):indeterminate {\n & + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(red(@color-default-a200), green(@color-default-a200), blue(@color-default-a200), 0.16);\n }\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Checkbox 强调色 ************\n * =============================================================================\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n @color: 'color-@{colorName}-a200';\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n // 选中状态的图标\n .mdui-checkbox input[type=\"checkbox\"]:checked,\n .mdui-checkbox input[type=\"checkbox\"]:indeterminate {\n & + .mdui-checkbox-icon::after {\n background-color: @@color;\n border-color: @@color;\n }\n }\n\n // 已选中时按下的阴影\n .mdui-checkbox:active input[type=\"checkbox\"],\n .mdui-checkbox input[type=\"checkbox\"]:focus {\n &:not(:disabled):checked + .mdui-checkbox-icon,\n &:not(:disabled):indeterminate + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(red(@@color), green(@@color), blue(@@color), 0.16);\n }\n }\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Checkbox dark ************\n * =============================================================================\n */\n.layout-theme({\n // 未选中的图标\n .mdui-checkbox-icon {\n &::after {\n border-color: rgba(255, 255, 255, 0.7);\n }\n\n &::before {\n border-right-color: @layout-dark-color-3 !important;\n border-bottom-color: @layout-dark-color-3 !important;\n }\n }\n\n // 禁用状态\n .mdui-checkbox input[type=\"checkbox\"]:disabled + .mdui-checkbox-icon {\n &::after {\n border-color: @color-white-icon-disabled;\n }\n }\n\n // 禁用且选中状态\n .mdui-checkbox input[type=\"checkbox\"] {\n &:disabled:checked + .mdui-checkbox-icon,\n &:disabled:indeterminate + .mdui-checkbox-icon {\n &::after {\n background-color: @color-white-icon-disabled !important;\n border-color: transparent !important;\n }\n }\n }\n\n // 未选中或禁用时 按下的阴影\n .mdui-checkbox:active input[type=\"checkbox\"],\n .mdui-checkbox input[type=\"checkbox\"]:focus {\n & + .mdui-checkbox-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Radio 单选框 ************\n * =============================================================================\n */\n\n.mdui-radio {\n position: relative;\n display: inline-block;\n height: 36px;\n padding-left: 36px;\n line-height: 36px;\n cursor: pointer;\n user-select: none;\n\n // 隐藏系统 input 标签,用自定义的图标代替\n input {\n position: absolute;\n width: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n }\n}\n\n/* 图标外圈 */\n.mdui-radio-icon {\n position: absolute;\n top: 9px;\n left: 0;\n display: inline-block;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n vertical-align: middle;\n border: 2px solid @color-black-icon;\n border-radius: 18px;\n transition: all .3s @animation-curve-default,\n box-shadow .14s @animation-curve-default;\n\n // 图标内部圆圈\n &::before {\n position: absolute;\n top: 0;\n left: 0;\n width: 14px;\n height: 14px;\n background-color: @color-default-a200;\n border-radius: 14px;\n transform: scale(0);\n opacity: 0;\n transition: all .3s @animation-curve-default;\n content: ' ';\n }\n}\n\n/* 选中状态的图标 */\n.mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: @color-default-a200;\n\n &::before {\n transform: scale(0.68);\n opacity: 1;\n }\n}\n\n/* 禁用状态的图标 */\n.mdui-radio input[type=\"radio\"]:disabled + .mdui-radio-icon {\n border-color: @color-black-icon-disabled !important;\n}\n\n/* 禁用且选中状态的图标 */\n.mdui-radio input[type=\"radio\"]:disabled:checked + .mdui-radio-icon {\n &::before {\n background-color: @color-black-icon-disabled !important;\n }\n}\n\n/* 未选中、禁用时 按下的阴影 */\n.mdui-radio:active input[type=\"radio\"],\n.mdui-radio input[type=\"radio\"]:focus {\n & + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(0, 0, 0, 0.1);\n }\n}\n\n/* 已选中时按下的阴影 */\n.mdui-radio:active input[type=\"radio\"],\n.mdui-radio input[type=\"radio\"]:focus {\n &:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(red(@color-default-a200), green(@color-default-a200), blue(@color-default-a200), 0.16);\n }\n}\n\n/**\n * =============================================================================\n * ************ Radio 强调色 ************\n * =============================================================================\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n @color: 'color-@{colorName}-a200';\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n // 选中状态的图标\n .mdui-radio input[type=\"radio\"]:checked + .mdui-radio-icon {\n border-color: @@color;\n\n &::before {\n background-color: @@color;\n }\n }\n\n // 已选中时按下的阴影\n .mdui-radio:active input[type=\"radio\"],\n .mdui-radio input[type=\"radio\"]:focus {\n &:checked:not(:disabled) + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(red(@@color), green(@@color), blue(@@color), 0.16);\n }\n }\n\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Radio dark ************\n * =============================================================================\n */\n.layout-theme({\n // 图标外圈\n .mdui-radio-icon {\n border-color: rgba(255, 255, 255, 0.7);\n }\n\n // 禁用状态\n .mdui-radio input[type=\"radio\"]:disabled + .mdui-radio-icon {\n border-color: @color-white-icon-disabled !important;\n }\n\n // 禁用且选中状态\n .mdui-radio input[type=\"radio\"]:disabled:checked + .mdui-radio-icon {\n &::before {\n background-color: @color-white-icon-disabled !important;\n }\n }\n\n // 未选中或禁用时 按下的阴影\n .mdui-radio:active input[type=\"radio\"],\n .mdui-radio input[type=\"radio\"]:focus {\n & + .mdui-radio-icon {\n box-shadow: 0 0 0 15px rgba(255, 255, 255, 0.1);\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Switch 单选框 ************\n * =============================================================================\n */\n\n.mdui-switch {\n display: inline-block;\n height: 36px;\n line-height: 36px;\n cursor: pointer;\n user-select: none;\n\n // 隐藏系统 input 标签,用自定义的图标代替\n input {\n position: absolute;\n width: 0;\n height: 0;\n overflow: hidden;\n opacity: 0;\n }\n}\n\n/* 图标轨道 */\n.mdui-switch-icon {\n position: relative;\n display: inline-block;\n width: 36px;\n height: 14px;\n vertical-align: middle;\n background-color: rgba(0, 0, 0, 0.38);\n border-radius: 14px;\n transition: background-color .3s @animation-curve-default;\n\n // 圆形图标\n &::before {\n position: absolute;\n top: -3px;\n left: -3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n background-color: @color-grey-50;\n border-radius: 20px;\n transition: box-shadow .14s @animation-curve-default,\n background-color .3s @animation-curve-default,\n left .3s @animation-curve-default;\n content: ' ';\n .mdui-shadow(1);\n }\n}\n\n/* 选中状态的图标 */\n.mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(red(@color-default-a200), green(@color-default-a200), blue(@color-default-a200), 0.5);\n\n &::before {\n left: 20px;\n background-color: @color-default-a200;\n }\n}\n\n/* 未选中时或禁用时 按下的阴影 */\n.mdui-switch:active input[type=\"checkbox\"],\n.mdui-switch input[type=\"checkbox\"]:focus {\n & + .mdui-switch-icon::before {\n box-shadow:\n // box-shadow(1)\n 0 2px 1px -1px rgba(0, 0, 0, .2),\n 0 1px 1px 0 rgba(0, 0, 0, .14),\n 0 1px 3px 0 rgba(0, 0, 0, .12),\n\n // 颜色阴影\n 0 0 0 15px rgba(0, 0, 0, 0.1);\n }\n}\n\n/* 已选中时按下的阴影 */\n.mdui-switch:active input[type=\"checkbox\"],\n.mdui-switch input[type=\"checkbox\"]:focus {\n &:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow:\n // box-shadow(1)\n 0 2px 1px -1px rgba(0, 0, 0, .2),\n 0 1px 1px 0 rgba(0, 0, 0, .14),\n 0 1px 3px 0 rgba(0, 0, 0, .12),\n\n // 颜色阴影\n 0 0 0 15px rgba(red(@color-default-a200), green(@color-default-a200), blue(@color-default-a200), 0.16);\n }\n}\n\n/* 禁用状态 */\n.mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon {\n background-color: rgba(0, 0, 0, 0.12) !important;\n\n &::before {\n background-color: @color-grey-400 !important;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Switch 强调色 ************\n * =============================================================================\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n @color: 'color-@{colorName}-a200';\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n // 选中状态的图标\n .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(red(@@color), green(@@color), blue(@@color), 0.5);\n\n &::before {\n background-color: @@color;\n }\n }\n\n // 已选中时按下的阴影\n .mdui-switch:active input[type=\"checkbox\"],\n .mdui-switch input[type=\"checkbox\"]:focus {\n &:checked:not(:disabled) + .mdui-switch-icon::before {\n box-shadow:\n // box-shadow(1)\n 0 2px 1px -1px rgba(0, 0, 0, .2),\n 0 1px 1px 0 rgba(0, 0, 0, .14),\n 0 1px 3px 0 rgba(0, 0, 0, .12),\n\n // 颜色阴影\n 0 0 0 15px rgba(red(@@color), green(@@color), blue(@@color), 0.16);\n }\n }\n\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Radio dark ************\n * =============================================================================\n */\n.layout-theme({\n // 默认状态\n .mdui-switch-icon {\n background-color: rgba(255, 255, 255, 0.3);\n\n &::before {\n background-color: @color-grey-400;\n }\n }\n\n // 选中状态\n & {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n @color: 'color-@{colorName}-a200';\n @color-a100: 'color-@{colorName}-a100';\n\n &.mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n .mdui-switch input[type=\"checkbox\"]:checked + .mdui-switch-icon {\n background-color: rgba(red(@@color-a100), green(@@color-a100), blue(@@color-a100), 0.5);\n\n &::before {\n background-color: @@color-a100;\n }\n }\n\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n }\n\n // 未选中或禁用时 按下的阴影\n .mdui-switch:active input[type=\"checkbox\"],\n .mdui-switch input[type=\"checkbox\"]:focus {\n & + .mdui-switch-icon::before {\n box-shadow:\n // box-shadow(1)\n 0 2px 1px -1px rgba(0, 0, 0, .2),\n 0 1px 1px 0 rgba(0, 0, 0, .14),\n 0 1px 3px 0 rgba(0, 0, 0, .12),\n\n // 颜色阴影\n 0 0 0 15px rgba(255, 255, 255, 0.1);\n }\n }\n\n // 禁用状态\n .mdui-switch input[type=\"checkbox\"]:disabled + .mdui-switch-icon {\n background-color: rgba(255, 255, 255, 0.1) !important;\n\n &::before {\n background-color: @color-grey-800 !important;\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Slider 滑块 ************\n * =============================================================================\n */\n\n@slider-light-color: #bdbdbd; // rgba(0, 0, 0, .26)\n@slider-light-color-focus: #9e9e9e; // rgba(0, 0, 0, .38)\n@slider-light-color-disabled: #bdbdbd; // rgba(0, 0, 0, .26)\n\n@slider-dark-color: #4c4c4c; // rgba(255, 255, 255, .3)\n@slider-dark-color-focus: #4c4c4c; // rgba(255, 255, 255, .3)\n@slider-dark-color-disabled: #4c4c4c; // rgba(255, 255, 255, .3)\n\n.mdui-slider {\n position: relative;\n display: block;\n width: 100%;\n height: 36px;\n\n input[type=\"range\"] {\n position: absolute;\n top: 50%;\n z-index: 2;\n width: 100%;\n height: 20px;\n margin-top: -10px;\n cursor: pointer;\n opacity: 0;\n appearance: none;\n }\n}\n\n.mdui-slider-track,\n.mdui-slider-fill {\n position: absolute;\n top: 50%;\n box-sizing: border-box;\n height: 2px;\n margin-top: -1px;\n\n &::before {\n display: block;\n width: 100%;\n height: 100%;\n content: ' ';\n }\n}\n\n/* 轨道 */\n.mdui-slider-track {\n right: 0;\n\n &::before {\n background-color: @slider-light-color;\n transition: background-color .3s @animation-curve-default;\n }\n}\n\n/* 已滑动部分 */\n.mdui-slider-fill {\n left: 0;\n\n &::before {\n background-color: @color-default-a200;\n }\n}\n\n/* 滑块 */\n.mdui-slider-thumb {\n position: absolute;\n top: 50%;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin-top: -6px;\n background-color: @color-default-a200;\n border: 2px solid @color-default-a200;\n border-radius: 50%;\n transform: translate(-50%);\n transition:\n background .45s @animation-curve-default,\n border-color .45s @animation-curve-default,\n transform .2s @animation-curve-default,\n border-radius .2s @animation-curve-default;\n will-change: background, border-color, transform, border-radius;\n}\n\n\n/**\n * =============================================================================\n * ************ Slider 强调色 ************\n * =============================================================================\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n @color: 'color-@{colorName}-a200';\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n .mdui-slider-fill {\n\n &::before {\n background-color: @@color;\n }\n }\n\n .mdui-slider-thumb {\n background-color: @@color;\n border: 2px solid @@color;\n }\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ============ Slider 的不同状态 ============\n * =============================================================================\n */\n\n/* 鼠标按下状态 */\n.mdui-slider-focus {\n .mdui-slider-track {\n\n &::before {\n background-color: @slider-light-color-focus;\n }\n }\n\n .mdui-slider-thumb {\n transform: translate(-50%) scale(1.6);\n }\n}\n\n/* 滑块值为 0 */\n.mdui-slider-zero {\n .mdui-slider-thumb {\n background-color: #fff;\n border-color: @slider-light-color;\n }\n}\n\n/* 滑块值为 0,且鼠标按下 */\n.mdui-slider-zero.mdui-slider-focus {\n .mdui-slider-thumb {\n border-color: @slider-light-color-focus;\n }\n}\n\n/* 禁用状态 */\n.mdui-slider-disabled {\n input[type=\"range\"] {\n cursor: default;\n }\n\n .mdui-slider-track {\n\n &::before {\n background-color: @slider-light-color-disabled;\n }\n }\n\n .mdui-slider-fill {\n\n &::before {\n background-color: @slider-light-color-disabled;\n }\n }\n\n .mdui-slider-thumb {\n background-color: @slider-light-color-disabled;\n border-color: transparent !important;\n transform: translate(-50%) scale(.72);\n }\n}\n\n/**\n * =============================================================================\n * ============ 间续型滑块 ============\n * =============================================================================\n */\n.mdui-slider-discrete {\n\n .mdui-slider-thumb {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n margin-left: -15px;\n border: none;\n transform: rotate(-45deg) scale(.4);\n\n // 间续型滑块的值显示\n span {\n position: absolute;\n top: 9px;\n left: -1px;\n width: 100%;\n color: #fff;\n font-size: 12px;\n text-align: center;\n transform: rotate(45deg);\n opacity: 0;\n transition: opacity .25s @animation-curve-default;\n }\n }\n\n // 鼠标按下状态\n &.mdui-slider-focus {\n .mdui-slider-thumb {\n border-radius: 15px 15px 15px 0;\n transform: rotate(-45deg) scale(1) translate(22px, -22px);\n\n span {\n opacity: 1;\n }\n }\n }\n\n // 滑块值为 0\n &.mdui-slider-zero {\n .mdui-slider-thumb {\n background-color: #323232;\n }\n }\n\n // 滑块值为 0,且鼠标按下\n &.mdui-slider-zero.mdui-slider-focus {\n .mdui-slider-thumb {\n background-color: @slider-light-color;\n }\n }\n\n // 禁用状态\n &.mdui-slider-disabled {\n .mdui-slider-thumb {\n transform: rotate(-45deg) scale(.288);\n }\n }\n\n // 滑块值为 0,且禁用\n &.mdui-slider-zero.mdui-slider-disabled {\n .mdui-slider-thumb {\n background-color: @slider-light-color;\n }\n }\n}\n\n/**\n * =============================================================================\n * ************ Slider dark ************\n * =============================================================================\n */\n.layout-theme({\n // 轨道\n .mdui-slider-track {\n\n &::before {\n background-color: @slider-dark-color;\n }\n }\n\n // 鼠标按下状态\n .mdui-slider-focus {\n .mdui-slider-track {\n\n &::before {\n background-color: @slider-dark-color-focus;\n }\n }\n }\n\n // 滑块值为 0\n .mdui-slider-zero {\n .mdui-slider-thumb {\n background-color: @layout-dark-color-3;\n border-color: @slider-dark-color;\n }\n }\n\n // 滑块值为 0,且鼠标按下\n .mdui-slider-zero.mdui-slider-focus {\n .mdui-slider-thumb {\n border-color: @slider-dark-color-focus;\n }\n }\n\n // 禁用状态\n .mdui-slider-disabled {\n .mdui-slider-track {\n\n &::before {\n background-color: @slider-dark-color-disabled;\n }\n }\n\n .mdui-slider-fill {\n\n &::before {\n background-color: @slider-dark-color-disabled;\n }\n }\n\n .mdui-slider-thumb {\n background-color: @slider-dark-color-disabled;\n }\n }\n\n // 间续型滑块\n .mdui-slider-discrete {\n\n // 滑块值为 0\n &.mdui-slider-zero {\n .mdui-slider-thumb {\n background-color: #fefefe;\n }\n }\n\n // 滑块值为 0,且鼠标按下\n &.mdui-slider-zero.mdui-slider-focus {\n .mdui-slider-thumb {\n background-color: #5c5c5c;\n }\n }\n\n // 滑块值为 0,且禁用\n &.mdui-slider-zero.mdui-slider-disabled {\n .mdui-slider-thumb {\n background-color: @slider-dark-color-disabled;\n }\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Button 按钮 ************\n * =============================================================================\n */\n\n/* 默认为 Flat 扁平按钮 */\n.mdui-btn,\n.mdui-fab {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n min-width: 88px;\n height: @button-height;\n margin: 0;\n padding: 0 16px;\n overflow: hidden;\n color: inherit;\n font-weight: 500;\n font-size: 14px;\n line-height: @button-height;\n letter-spacing: 0.04em;\n white-space: nowrap;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n vertical-align: middle;\n background: transparent;\n border: none;\n border-radius: 2px;\n outline: none;\n cursor: pointer;\n transition: all .2s @animation-curve-default,\n box-shadow .2s @animation-curve-fast-out-linear-in;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n // 移除点击延迟触发\n touch-action: manipulation;\n will-change: box-shadow;\n zoom: 1;\n -webkit-user-drag: none;\n\n // 透明按钮 hover、active 时颜色加深\n &:hover {\n background-color: rgba(0, 0, 0, 0.1);\n }\n &:not(.mdui-ripple):active {\n background-color: rgba(0, 0, 0, 0.165);\n }\n\n // 带背景色的按钮 hover、active 时增加透明度\n &[class*=\"mdui-color-\"]:hover {\n opacity: 0.87;\n }\n &:not(.mdui-ripple)[class*=\"mdui-color-\"]:active {\n opacity: 0.76;\n }\n}\n\n/* 按钮内的图标 */\n.mdui-btn {\n .mdui-icon-left,\n .mdui-icon-right {\n &,\n &::before {\n height: inherit;\n font-size: 1.3em;\n line-height: inherit;\n }\n }\n .mdui-icon-left {\n float: left;\n margin-right: 0.4em;\n }\n .mdui-icon-right {\n float: right;\n margin-left: 0.4em;\n }\n}\n\ninput.mdui-btn[type=\"submit\"] {\n appearance: none;\n}\n\n/* Raised button 浮动按钮 */\n.mdui-btn-raised {\n .mdui-shadow(2);\n\n &:hover {\n .mdui-shadow(4);\n }\n\n &:active {\n .mdui-shadow(8);\n }\n}\n\n/* 禁用按钮 */\n.mdui-btn,\n.mdui-fab {\n &[disabled] {\n &,\n &:hover,\n &:active,\n &:focus {\n color: rgba(0, 0, 0, .26) !important;\n background-color: transparent !important;\n cursor: default !important;\n opacity: 1 !important;\n .mdui-shadow(0) !important;\n .mdui-icon {\n color: rgba(0, 0, 0, .26) !important;\n }\n }\n }\n}\n\n/* 禁用状态浮动按钮和浮动操作按钮 */\n.mdui-btn-raised,\n.mdui-fab {\n &[disabled] {\n &,\n &:hover,\n &:active,\n &:focus {\n background-color: rgba(0, 0, 0, .12) !important;\n .mdui-shadow(2) !important;\n }\n }\n}\n\n/* 加粗按钮文本 */\n.mdui-btn-bold {\n font-weight: bold;\n}\n\n/* 图标按钮 */\n.mdui-btn-icon {\n width: 36px;\n min-width: 36px;\n height: 36px;\n margin-right: 0;\n margin-left: 0;\n padding: 0;\n overflow: hidden;\n font-size: 24px;\n line-height: normal;\n border-radius: 50%;\n\n .mdui-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 24px;\n line-height: 24px;\n transform: translate(-12px, -12px);\n }\n\n &.mdui-ripple {\n transform: translateZ(0);\n }\n}\n\n/* 按钮 100% 宽度 */\n.mdui-btn-block {\n display: block;\n width: 100%;\n}\n\n/* 密集型按钮 */\n.mdui-btn-dense {\n height: 32px;\n font-size: 13px;\n line-height: 32px;\n\n &.mdui-btn-icon {\n width: 32px;\n min-width: 32px;\n }\n}\n\n/* 按钮组 */\n.mdui-btn-group {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n\n .mdui-btn {\n float: left;\n min-width: inherit;\n padding: 0 12px;\n color: rgba(0, 0, 0, 0.54);\n border-radius: 0;\n\n &::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n border-left: 1px solid transparent;\n content: ' ';\n }\n\n &:first-child {\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n\n &::before {\n border-left: none;\n }\n }\n\n &:last-child {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n }\n\n // 激活状态\n &.mdui-btn-active {\n color: rgba(0, 0, 0, 0.87);\n background-color: rgba(0, 0, 0, 0.215);\n\n &+.mdui-btn-active {\n &::before {\n border-left: 1px solid rgba(0, 0, 0, 0.145);\n }\n }\n }\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Button dark ************\n * =============================================================================\n */\n.layout-theme({\n // 透明按钮 hover、active 时颜色变浅\n .mdui-btn,\n .mdui-fab {\n // 透明按钮 hover、active 时颜色变浅\n &:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n &:not(.mdui-ripple):active {\n background-color: rgba(255, 255, 255, 0.165);\n }\n\n // 带背景的按钮 hover、active 时增加透明度\n &[class*=\"mdui-color-\"]:hover {\n opacity: 0.87;\n }\n &:not(.mdui-ripple)[class*=\"mdui-color-\"]:active {\n opacity: 0.76;\n }\n }\n\n // 禁用按钮\n .mdui-btn,\n .mdui-fab {\n &[disabled] {\n &,\n &:hover,\n &:active,\n &:focus {\n color: @color-white-icon-disabled !important;\n background-color: transparent !important;\n .mdui-icon {\n color: @color-white-icon-disabled !important;\n }\n }\n }\n }\n\n // 禁用状态浮动按钮和浮动操作按钮\n .mdui-btn-raised,\n .mdui-fab {\n &[disabled] {\n &,\n &:hover,\n &:active,\n &:focus {\n background-color: rgba(255, 255, 255, .12) !important;\n }\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Fab 浮动操作按钮 ************\n * =============================================================================\n */\n\n@import '../button/index';\n\n@fab-size: 56px;\n@fab-size-mini: 40px;\n\n/* 浮动操作按钮 */\n.mdui-fab {\n width: @fab-size;\n min-width: @fab-size;\n height: @fab-size;\n margin: auto;\n padding: 0 !important;\n overflow: hidden;\n font-size: 24px;\n line-height: normal !important;\n border-radius: 50%;\n .mdui-shadow(6);\n\n &:hover{\n .mdui-shadow(8);\n }\n\n &:active {\n .mdui-shadow(12);\n }\n\n // 浮动操作按钮中的图标\n .mdui-icon {\n position: absolute;\n top: 0;\n left: 0;\n width: 24px;\n margin-top: 16px;\n margin-left: 16px;\n line-height: 24px;\n }\n}\n\n/* mini 型浮动操作按钮 */\n.mdui-fab-mini {\n width: @fab-size-mini;\n min-width: @fab-size-mini;\n height: @fab-size-mini;\n\n // mini 型浮动操作按钮中的图标\n .mdui-icon {\n margin-top: 8px;\n margin-left: 8px;\n }\n}\n\n/* 固定到右下角的 FAB 按钮 */\n.mdui-fab-fixed,\n.mdui-fab-wrapper {\n position: fixed !important;\n\n /* 手机平板上距离屏幕右下角 16px */\n right: 16px;\n bottom: 16px;\n\n @media (min-width: @screen-md-min) {\n /* 电脑上距离屏幕右下角 24px */\n right: 24px;\n bottom: 24px;\n }\n}\n\n/* 含菜单的浮动操作按钮 */\n.mdui-fab-wrapper {\n position: relative;\n z-index: @z-index-fab;\n width: @fab-size;\n height: @fab-size;\n padding-top: 8px;\n text-align: center;\n\n // 菜单打开前\n &>.mdui-fab {\n .mdui-icon:not(.mdui-fab-opened) {\n opacity: 1;\n transition: all .2s @animation-curve-default;\n will-change: opacity, transform;\n }\n .mdui-icon.mdui-fab-opened {\n transform: rotate(225deg);\n opacity: 0;\n transition: all .2s @animation-curve-default;\n will-change: opacity, transform;\n }\n }\n\n // 菜单打开后\n &>.mdui-fab.mdui-fab-opened {\n .mdui-icon:not(.mdui-fab-opened) {\n transform: rotate(225deg);\n opacity: 0;\n }\n .mdui-icon.mdui-fab-opened {\n transform: rotate(360deg);\n opacity: 1;\n }\n }\n\n // mini 按钮需要垂直居中\n &>.mdui-fab-mini {\n margin-top: (@fab-size - @fab-size-mini) / 2;\n }\n\n .mdui-fab-dial {\n position: absolute;\n right: 0;\n bottom: @fab-size + 8px;\n left: 0;\n height: 0;\n text-align: center;\n visibility: visible;\n\n .mdui-fab {\n margin: 8px 0;\n transform: scale(0);\n opacity: 0;\n transition: box-shadow .2s @animation-curve-fast-out-linear-in,\n color .2s @animation-curve-default,\n // fab\n transform 150ms @animation-curve-default,\n opacity 150ms @animation-curve-default;\n }\n\n &.mdui-fab-dial-show {\n .mdui-fab {\n transform: scale(1);\n opacity: 1;\n }\n }\n }\n}\n\n/* 添加类 .mdui-fab-hide 以动画的形式隐藏按钮 */\n.mdui-fab,\n.mdui-fab-mini,\n.mdui-fab-wrapper {\n transform: scale(1) translateZ(0);\n transition: all .2s @animation-curve-default,\n box-shadow .2s @animation-curve-fast-out-linear-in,\n // fab\n transform .2s;\n will-change: transform;\n\n &.mdui-fab-hide {\n transform: scale(0) translateZ(0);\n }\n}\n","/**\n * =============================================================================\n * ************ Select 下拉选择 ************\n * =============================================================================\n */\n\n.mdui-select {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n max-width: 100%;\n height: 36px;\n padding-right: 24px;\n padding-left: 0;\n font-size: 16px;\n font-family: @font-family-base;\n vertical-align: middle;\n //background-image: data-uri('image/svg+xml', './components/select/svg/arrow_down_dark.svg');\n // https://www.zhangxinxu.com/sp/svgo/ CSS 转义\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' opacity='.54'/%3E%3C/svg%3E\");\n\n // 箭头\n background-repeat: no-repeat;\n background-position: right center;\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n outline: none;\n cursor: pointer;\n transition-timing-function: @animation-curve-default;\n transition-duration: .2s;\n transition-property: background-color, box-shadow, background-position-x;\n appearance: none;\n user-select: none;\n will-change: background-color, box-shadow, background-position-x;\n\n &.mdui-select-open {\n border-bottom: none;\n }\n}\n\n.mdui-select-position-top {\n //background-image: data-uri('image/svg+xml', './components/select/svg/arrow_up_dark.svg');\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' opacity='.54'/%3E%3C/svg%3E\");\n}\n\n/* 底部和顶部菜单的样式 */\n.mdui-select-open {\n &.mdui-select-position-top,\n &.mdui-select-position-bottom {\n z-index: 99999;\n background-color: #fff;\n /* stylelint-disable-next-line */\n background-position-x: calc(~'100% - 12px');\n border-radius: 2px;\n }\n\n &.mdui-select-position-top {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid transparent;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 0 10px 10px -3px rgba(0,0,0,.2), 0 0 14px 1px rgba(0,0,0,.14), 0 -7px 24px 2px rgba(0,0,0,.12);\n\n .mdui-select-menu {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n\n // 隐藏下方的阴影\n box-shadow: 0 -4px 4px -2px rgba(0,0,0,.06), 8px 0 8px -4px rgba(0,0,0,.12), -8px 0 8px -4px rgba(0,0,0,.12)\n }\n }\n\n &.mdui-select-position-bottom {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n .mdui-shadow(8);\n\n .mdui-select-menu {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n\n // 隐藏上方阴影\n box-shadow: 0 5px 5px -3px rgba(0,0,0,.2), 0 9px 9px 1px rgba(0,0,0,.14), 0 8px 8px 2px rgba(0,0,0,.06);\n }\n }\n}\n\n/* 当前选中项文本 */\n.mdui-select-selected {\n position: absolute;\n top: 50%;\n right: 24px;\n left: 0;\n display: block;\n transform: translateY(-50%);\n transition: left .2s @animation-curve-linear-out-slow-in;\n .mdui-text-truncate();\n\n .mdui-select-open & {\n right: 32px;\n left: 16px;\n }\n\n .mdui-select-open.mdui-select-position-auto & {\n visibility: hidden;\n }\n}\n\n/* 菜单 */\n.mdui-select-menu {\n position: relative;\n z-index: 99999;\n box-sizing: border-box;\n height: 36px;\n margin: 0 -24px 0 0;\n\n // 在计算宽度时,把滚动条计算进去\n overflow-y: scroll;\n color: @color-black-text;\n background-color: #fff;\n border-radius: 2px;\n transform: scale(1, 0);\n visibility: hidden;\n cursor: default;\n opacity: 0;\n transition-timing-function: @animation-curve-linear-out-slow-in;\n transition-duration: .2s;\n transition-property: transform, opacity, visibility;\n will-change: transform, opacity, visibility;\n -webkit-overflow-scrolling: touch;\n .mdui-shadow(8);\n\n // 打开状态的菜单\n .mdui-select-open & {\n overflow-y: hidden;\n transform: scale(1, 1);\n visibility: visible;\n opacity: 1;\n }\n\n // 关闭状态的菜单\n .mdui-select-closing & {\n overflow-y: hidden;\n box-shadow: none;\n transform: scale(1, 1);\n visibility: visible;\n opacity: 0;\n }\n}\n\n/* 菜单项 */\n.mdui-select-menu-item {\n height: 48px;\n padding: 0 16px;\n line-height: 48px;\n cursor: pointer;\n .mdui-text-truncate();\n\n &:hover {\n background-color: @color-grey-200;\n }\n\n &:first-child {\n margin-top: 8px;\n }\n\n &:last-child {\n margin-bottom: 8px;\n }\n\n // 禁用项\n &[disabled] {\n color: @color-black-disabled !important;\n cursor: default;\n\n &:hover {\n background-color: inherit !important;\n }\n }\n\n // 已选中项\n &[selected] {\n color: @color-default-a200;\n }\n}\n\n\n/* 原生 select 组件 */\nselect.mdui-select {\n background-color: transparent;\n\n option {\n color: rgba(0, 0, 0, 0.87);\n }\n\n // 移除 IE 的下拉按钮\n &::-ms-expand {\n display: none;\n }\n}\n\n/* 原生多选 select 组件 */\nselect.mdui-select[multiple] {\n height: auto;\n padding: 0;\n font-size: 15px;\n background-color: #FFF;\n background-image: none;\n border: 1px solid rgba(0, 0, 0, 0.38);\n cursor: default;\n\n optgroup {\n margin: 8px 0 0 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.38);\n\n &:last-child {\n margin-bottom: 8px;\n }\n\n &:not(:first-child) {\n padding-top: 8px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n }\n }\n\n option {\n display: flex;\n align-items: center;\n height: 32px;\n margin: 0 0 0 -16px;\n padding: 0 16px;\n color: rgba(0, 0, 0, 0.87);\n\n &:first-child {\n margin-top: 8px;\n }\n\n &:last-child {\n margin-bottom: 8px;\n }\n }\n}\n\n/**\n * =============================================================================\n * ************ Select 强调色 ************\n * =============================================================================\n */\n\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n\n .mdui-select-menu-item {\n // 菜单中已选中项\n &[selected] {\n .mdui-text-color(@colorName);\n }\n }\n\n }\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Select dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-select {\n //background-image: data-uri('image/svg+xml', './components/select/svg/arrow_down_light.svg');\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M-.003 2.5l5 5 5-5h-10z' fill='%23FFF'/%3E%3C/svg%3E\");\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n }\n\n .mdui-select-position-top {\n //background-image: data-uri('image/svg+xml', './components/select/svg/arrow_up_light.svg');\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M10.003 7.5l-5-5-5 5h10z' fill='%23FFF'/%3E%3C/svg%3E\");\n }\n\n .mdui-select-open {\n &.mdui-select-position-top,\n &.mdui-select-position-bottom {\n background-color: @layout-dark-color-4;\n }\n\n &.mdui-select-position-top {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n }\n\n &.mdui-select-position-bottom {\n border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n }\n }\n\n .mdui-select-menu {\n color: #fff;\n background-color: @layout-dark-color-4;\n }\n\n .mdui-select-menu-item {\n &:hover {\n background-color: @color-grey-700;\n }\n\n &[disabled] {\n color: @color-white-disabled !important;\n }\n }\n\n // 原生 select 组件\n select.mdui-select {\n color: #FFF;\n background-color: @layout-dark-color-3;\n\n option {\n color: #FFF;\n background-color: @layout-dark-color-3;\n }\n }\n\n // 原生多选 select 组件\n select.mdui-select[multiple] {\n border: 1px solid rgba(255, 255, 255, 0.5);\n\n optgroup {\n color: rgba(255, 255, 255, 0.5);\n\n &:not(:first-child) {\n border-top: 1px solid rgba(255, 255, 255, 0.12);\n }\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Toolbar 工具栏 ************\n * =============================================================================\n */\n\n.mdui-toolbar {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n &>* {\n margin: 0 16px;\n .mdui-text-truncate();\n }\n\n // 工具栏默认有背景色时,工具栏中的按钮,hover 和 active 时颜色变浅\n &[class*=\"mdui-color-\"]:not(.mdui-color-transparent) {\n .mdui-btn {\n &:hover {\n background-color: rgba(255, 255, 255, 0.1);\n }\n &:active {\n background-color: rgba(255, 255, 255, 0.165);\n }\n }\n }\n\n &>a {\n color: inherit;\n text-decoration: none;\n user-select: none;\n }\n\n &>.mdui-btn-icon {\n width: @appbar-icon-width;\n min-width: @appbar-icon-width;\n height: @appbar-icon-width;\n\n // 手机横屏时\n @media (orientation: landscape) and (max-width: @screen-xs-max-landscape) {\n width: @appbar-icon-width-xs-landscape;\n min-width: @appbar-icon-width-xs-landscape;\n height: @appbar-icon-width-xs-landscape;\n }\n\n .mdui-icon {\n height: 24px;\n line-height: 24px;\n }\n }\n\n .mdui-icon {\n color: inherit;\n }\n}\n\n.mdui-toolbar-spacer {\n flex-grow: 1;\n margin: 0;\n}\n\n// 响应式。只有在应用栏中的工具栏,才具有响应式特性,不在应用栏中,则使用手机样式\n._toolbar_responsive_mixed(@toolbar-height, @icon-width) {\n .mdui-toolbar {\n height: @toolbar-height;\n line-height: @toolbar-height;\n\n &>.mdui-btn {\n margin: 0 (@toolbar-height - @icon-width) / 2;\n\n & + .mdui-btn {\n margin-left: 0;\n }\n }\n }\n}\n\n/* 手机 */\n._toolbar_responsive_mixed(@appbar-height-xs-portrait, @appbar-icon-width);\n\n.mdui-appbar {\n // 平板和桌面\n @media (min-width: @screen-sm-min) {\n ._toolbar_responsive_mixed(@appbar-height-sm, @appbar-icon-width);\n }\n\n // 手机横屏\n @media (orientation: landscape) and (max-width: @screen-xs-max-landscape) {\n ._toolbar_responsive_mixed(@appbar-height-xs-landscape, @appbar-icon-width-xs-landscape);\n }\n}\n","/**\n * =============================================================================\n * ************ Appbar 应用栏 ************\n * =============================================================================\n */\n\n@import '../toolbar/index';\n@import '../headroom/index';\n\n.mdui-appbar {\n z-index: @z-index-appbar;\n .mdui-shadow(4);\n}\n\n/* appbar 固定在顶部 */\n.mdui-appbar-fixed {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n transition-timing-function: @animation-curve-linear-out-slow-in;\n transition-duration: 0.3s;\n transition-property: left, right;\n will-change: left, right;\n}\n\n/* 左侧留出抽屉栏的距离 */\n.mdui-appbar-inset.mdui-appbar-fixed {\n .mdui-drawer-body-left & {\n @media (min-width: @screen-md-min) {\n left: @drawer-width-md;\n }\n }\n\n .mdui-drawer-body-right & {\n @media (min-width: @screen-md-min) {\n right: @drawer-width-md;\n }\n }\n}\n\n/* 含工具栏 */\n.mdui-appbar-with-toolbar {\n padding-top: @appbar-height-xs-portrait;\n\n // 平板和桌面\n @media (min-width: @screen-sm-min) {\n padding-top: @appbar-height-sm;\n }\n\n // 手机横屏\n @media (orientation: landscape) and (max-width: @screen-xs-max-landscape) {\n padding-top: @appbar-height-xs-landscape;\n }\n}\n\n/* 含 Tab */\n.mdui-appbar-with-tab {\n padding-top: 48px;\n}\n\n/* 含大 Tab */\n.mdui-appbar-with-tab-larger {\n padding-top: 72px;\n}\n\n/* 含工具栏和 Tab */\n.mdui-appbar-with-toolbar.mdui-appbar-with-tab {\n padding-top: @appbar-height-xs-portrait + 48px;\n\n // 平板和桌面\n @media (min-width: @screen-sm-min) {\n padding-top: @appbar-height-sm + 48px;\n }\n\n // 手机横屏\n @media (orientation: landscape) and (max-width: @screen-xs-max-landscape) {\n padding-top: @appbar-height-xs-landscape + 48px;\n }\n}\n\n/* 含工具栏和大 Tab */\n.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger {\n padding-top: @appbar-height-xs-portrait + 72px;\n\n // 平板和桌面\n @media (min-width: @screen-sm-min) {\n padding-top: @appbar-height-sm + 72px;\n }\n\n // 手机横屏\n @media (orientation: landscape) and (max-width: @screen-xs-max-landscape) {\n padding-top: @appbar-height-xs-landscape + 72px;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Appbar dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-appbar {\n &>[class*=\"mdui-color-\"]:not(.mdui-color-transparent) {\n color: #fff !important;\n background-color: @layout-dark-color-2 !important;\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Card 卡片 ************\n * =============================================================================\n */\n\n/* 卡片 */\n.mdui-card {\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n color: #000;\n background-color: #fff;\n border-radius: 2px;\n .mdui-shadow(2);\n}\n\n/**\n * ===================== 头部,包含头像、标题、副标题\n */\n.mdui-card-header {\n position: relative;\n box-sizing: border-box;\n height: 72px;\n padding: 16px;\n}\n\n/* 卡片头部头像 */\n.mdui-card-header-avatar {\n float: left;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n}\n\n/* 卡片头部标题 */\n.mdui-card-header-title {\n display: block;\n margin-left: 52px;\n font-weight: 500;\n font-size: 16px;\n line-height: 20px;\n opacity: @opacity-black-text;\n .mdui-text-truncate();\n}\n\n/* 卡片头部副标题 */\n.mdui-card-header-subtitle {\n display: block;\n margin-left: 52px;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n opacity: @opacity-black-secondary;\n .mdui-text-truncate();\n}\n\n/**\n * =========================== 主标题区域\n */\n.mdui-card-primary {\n position: relative;\n padding: 24px 16px 16px 16px;\n}\n\n/* 主标题区域标题 */\n.mdui-card-primary-title {\n display: block;\n font-size: 24px;\n line-height: 36px;\n opacity: @opacity-black-text;\n}\n\n/* 主标题区域副标题 */\n.mdui-card-primary-subtitle {\n display: block;\n font-size: 14px;\n line-height: 24px;\n opacity: @opacity-black-secondary;\n}\n\n/**\n * ============================ 内容区域\n */\n.mdui-card-content {\n position: relative;\n padding: 16px;\n font-size: 14px;\n line-height: 24px;\n}\n\n/**\n * ============================ 卡片菜单\n */\n.mdui-card-menu {\n position: absolute;\n top: 16px;\n right: 16px;\n z-index: 1;\n\n .mdui-btn {\n margin-left: 8px;\n }\n}\n\n/**\n * =========================== 按钮区域\n */\n.mdui-card-actions {\n .mdui-clearfix();\n\n position: relative;\n box-sizing: border-box;\n padding: 8px;\n\n .mdui-btn {\n max-width: 100%;\n margin: 0 8px 0 0;\n .mdui-text-truncate();\n }\n\n .mdui-btn-icon {\n width: @button-height;\n height: @button-height;\n margin: 0 8px;\n }\n}\n\n/* 使按钮竖向排列 */\n.mdui-card-actions-stacked {\n .mdui-btn {\n display: block;\n margin: 0 0 4px 0;\n &:last-child {\n margin: 0;\n }\n }\n}\n\n/**\n * ============================= 媒体元素区域\n */\n.mdui-card-media {\n position: relative;\n img, video {\n display: block;\n width: 100%;\n }\n}\n\n/* 覆盖在媒体元素上的内容 */\n.mdui-card-media-covered {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n color: #fff;\n background: rgba(0, 0, 0, 0.2);\n\n /* 覆盖在媒体元素上的标题 */\n .mdui-card-primary-title {\n opacity: @opacity-white-text;\n }\n .mdui-card-primary-subtitle {\n opacity: @opacity-white-secondary;\n }\n}\n\n/* 覆盖在媒体元素顶部 */\n.mdui-card-media-covered-top {\n top: 0;\n bottom: auto;\n}\n\n/* 覆盖层透明 */\n.mdui-card-media-covered-transparent {\n background: transparent;\n}\n\n/* 覆盖层渐变 */\n.mdui-card-media-covered-gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n\n &.mdui-card-media-covered-top {\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Card dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-card {\n color: #fff;\n background-color: @layout-dark-color-4;\n }\n});\n","/**\n * =============================================================================\n * ************ Tab ************\n * =============================================================================\n *\n * 在手机上选项卡始终平分或可滚动,在平板以上的设备上默认左对齐,可以选择居中对齐,或全宽等分\n */\n\n/* 选项卡,默认的选项卡为全宽 */\n.mdui-tab {\n position: relative;\n display: flex;\n min-height: 48px;\n max-height: 72px;\n margin: 0 auto;\n padding: 0;\n overflow-x: auto;\n overflow-y: hidden;\n white-space: nowrap;\n -webkit-overflow-scrolling: touch;\n\n a {\n display: flex;\n // 手机上始终等分选项卡\n flex: 1;\n\n // 使图标和文本垂直排列\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 72px;\n min-height: 48px;\n max-height: 72px;\n padding: 12px;\n overflow: hidden;\n color: inherit;\n font-size: 14px;\n text-align: center;\n text-transform: uppercase;\n text-decoration: none;\n text-overflow: ellipsis;\n outline: none;\n cursor: pointer;\n opacity: 0.7;\n user-select: none;\n\n .mdui-icon {\n opacity: 0.7;\n }\n\n // 平板或以上设备\n @media (min-width: @screen-sm-min) {\n\n // 平板/pc上选项卡左对齐\n flex: none;\n min-width: 99px;\n max-width: 264px;\n\n // 手机上 padding 12px,平板/pc上 padding 24px\n padding: 12px 24px;\n }\n\n @media (min-width: @screen-md-min) {\n min-width: 112px;\n }\n\n @media (min-width: @screen-lg-min) {\n min-width: 136px;\n }\n\n @media (min-width: @screen-xl-min) {\n min-width: 160px;\n }\n\n label {\n display: block;\n width: 100%;\n cursor: pointer;\n }\n\n .mdui-icon + label {\n margin-top: 8px;\n }\n\n &[disabled] {\n cursor: default;\n opacity: 0.38;\n\n label {\n cursor: default;\n }\n }\n }\n\n // 激活状态的选项\n .mdui-tab-active {\n color: @color-default-500;\n opacity: 1;\n .mdui-icon {\n opacity: 1;\n }\n }\n}\n\n/* 选项卡居中 */\n.mdui-tab-centered {\n @media (min-width: @screen-sm-min) {\n &::before {\n flex-grow: 1;\n content: ' ';\n }\n &::after {\n flex-grow: 1;\n content: ' ';\n }\n a {\n flex: none;\n }\n }\n}\n\n/* 选项卡始终全宽等分 */\n.mdui-tab-full-width {\n a {\n flex: 1;\n max-width: none;\n }\n}\n\n\n/* 可横向滚动的选项卡 */\n.mdui-tab-scrollable {\n padding-left: 56px;\n\n a {\n flex: none;\n }\n\n @media (max-width: @screen-xs-max) {\n padding-left: 60px;\n }\n\n}\n\n/* 下划线指示器 */\n.mdui-tab-indicator {\n position: absolute;\n bottom: 0;\n height: 2px;\n background-color: @color-default-500;\n transition: all .35s @animation-curve-default;\n will-change: left, width;\n}\n\n/**\n * =============================================================================\n * ************ Tab 主色 ************\n * =============================================================================\n */\n\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n @colorName: extract(@globalPrimaryColors, @counter-color);\n @color: 'color-@{colorName}-500';\n\n .mdui-theme-primary-@{colorName} when not (@colorName = null) {\n .mdui-tab .mdui-tab-active {\n color: @@color;\n }\n\n .mdui-tab-indicator {\n background-color: @@color;\n }\n }\n\n }\n .loop-primary-theme(length(@globalPrimaryColors));\n}\n\n/* 带背景色的选项卡 */\n.mdui-tab[class*=\"mdui-color-\"]:not(.mdui-color-white) {\n .mdui-tab-active {\n color: inherit;\n }\n .mdui-tab-indicator {\n background-color: @color-white-500;\n }\n\n // 带背景色的选项卡中使用浅色滚动条\n & {\n .mdui-scrollbar-beautify(dark);\n }\n}\n","/**\n * =============================================================================\n * ************ Subheader 副标题 ************\n * =============================================================================\n *\n * 用于 List 和 Grid list 组件\n */\n\n.mdui-subheader,\n.mdui-subheader-inset {\n position: relative;\n box-sizing: border-box;\n height: 48px;\n padding-right: 16px;\n padding-left: 16px;\n color: @color-black-secondary;\n font-weight: 500;\n font-size: 14px;\n line-height: 48px;\n cursor: default;\n .mdui-text-truncate();\n}\n\n.mdui-subheader-inset {\n padding-left: 72px;\n}\n\n/**\n * =============================================================================\n * ************ Subheader dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-subheader,\n .mdui-subheader-inset {\n color: @color-white-secondary;\n }\n});\n","/**\n * =============================================================================\n * ************ Grid List 网格列表 ************\n * =============================================================================\n */\n\n/* 调整网格边距 */\n.mdui-grid-list {\n margin: 0 -@grid-list-gutter / 2;\n\n .mdui-col,\n [class*=\"mdui-col-xs-\"],\n [class*=\"mdui-col-sm-\"],\n [class*=\"mdui-col-md-\"],\n [class*=\"mdui-col-lg-\"],\n [class*=\"mdui-col-xl-\"] {\n padding-right: @grid-list-gutter / 2;\n padding-left: @grid-list-gutter / 2;\n }\n}\n\n/* 单元格 */\n.mdui-grid-tile {\n position: relative;\n box-sizing: border-box;\n margin-bottom: @grid-list-gutter;\n overflow: hidden;\n\n img {\n display: block;\n width: 100%;\n }\n}\n\n/* 操作栏 */\n.mdui-grid-tile-actions {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n min-height: 48px;\n max-height: 68px;\n padding: 16px;\n color: #fff;\n background: rgba(0, 0, 0, 0.2);\n\n .mdui-icon {\n color: #fff;\n }\n}\n\n/* 操作栏内的文本 */\n.mdui-grid-tile-text {\n flex: 1;\n overflow: hidden;\n}\n\n/* 标题 */\n.mdui-grid-tile-title {\n height: 16px;\n font-size: 16px;\n line-height: 16px;\n .mdui-text-truncate();\n\n .mdui-icon {\n margin-right: 8px;\n }\n}\n\n/* 副标题 */\n.mdui-grid-tile-subtitle {\n height: 18px;\n margin-top: 4px;\n font-size: 12px;\n line-height: 18px;\n .mdui-text-truncate();\n\n .mdui-icon {\n margin-right: 8px;\n font-size: 18px;\n }\n}\n\n/* 操作栏内的按钮 */\n.mdui-grid-tile-buttons {\n flex: none;\n margin: -8px;\n white-space: nowrap;\n\n .mdui-btn {\n margin-left: 8px;\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n.mdui-grid-tile-text + .mdui-grid-tile-buttons {\n margin-left: 8px;\n}\n.mdui-grid-tile-buttons + .mdui-grid-tile-text {\n margin-left: 16px;\n}\n\n/* 操作栏位于顶部 */\n.mdui-grid-tile-actions-top {\n top: 0;\n bottom: auto;\n}\n\n/* 操作栏背景透明 */\n.mdui-grid-tile-actions-transparent {\n background: transparent;\n}\n\n/* 操作栏背景渐变 */\n.mdui-grid-tile-actions-gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n\n &.mdui-grid-tile-actions-top {\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0.26), rgba(0, 0, 0, 0));\n }\n}","/**\n * =============================================================================\n * ************ List 列表 ************\n * =============================================================================\n */\n\n/* 列表 */\n.mdui-list {\n margin: 0;\n padding: 8px 0;\n list-style: none;\n background-color: transparent;\n\n // 子列表没有上下间距\n .mdui-list {\n padding: 0;\n }\n\n // 分割线上下边距\n &>.mdui-divider,\n &>.mdui-divider-light,\n &>.mdui-divider-dark,\n &>.mdui-divider-inset,\n &>.mdui-divider-inset-light,\n &>.mdui-divider-inset-dark {\n margin-top: 8px;\n margin-bottom: 8px;\n }\n\n a {\n color: inherit;\n text-decoration: none;\n }\n\n // 使用副标题时自动添加分割线\n .mdui-subheader,\n .mdui-subheader-inset {\n &::before {\n position: absolute;\n right: 0;\n left: 0;\n display: block;\n height: 1px;\n background-color: @color-black-divider;\n content: ' ';\n }\n\n margin-top: 8px;\n\n &:first-child {\n &::before {\n background-color: transparent;\n }\n\n // 第一个副标题把列表的 padding-top 抵消掉\n margin-top: -8px;\n }\n }\n .mdui-subheader-inset {\n &::before {\n left: 72px;\n }\n }\n}\n\n/* 列表项 */\n.mdui-list-item {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n min-height: 48px;\n padding: 0 16px;\n text-decoration: none;\n cursor: pointer;\n transition: background-color .3s @animation-curve-default;\n\n &:hover {\n background-color: @color-hover-black;\n }\n\n // http://stackoverflow.com/a/31915203\n &::after {\n height: 48px;\n visibility: hidden;\n content: ' ';\n }\n}\n\n/* 列表项图标 */\n.mdui-list-item-icon {\n width: 24px;\n min-width: 24px;\n height: 24px;\n color: @color-black-icon;\n}\n\n/* 列表项头像 */\n.mdui-list-item-avatar {\n min-width: 40px;\n max-width: 40px;\n height: 40px;\n margin-top: 8px;\n margin-bottom: 8px;\n color: @color-white;\n line-height: 40px;\n text-align: center;\n background-color: @color-grey-400;\n border-radius: 50%;\n img {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n }\n}\n\n/* 列表项内容 */\n.mdui-list-item-content {\n flex-grow: 1;\n padding-top: 14px;\n padding-bottom: 14px;\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n}\n\n/* 列表项内容的副内容 */\n.mdui-list-item-text {\n font-size: 14px;\n opacity: @opacity-black-secondary;\n}\n.mdui-list-item-title {\n ~ .mdui-list-item-text {\n margin-top: 4px;\n }\n}\n\n/* 激活状态的列表项 */\n.mdui-list-item-active {\n font-weight: 700;\n background-color: @color-hover-black;\n\n .mdui-list-item-content {\n font-weight: 700;\n }\n .mdui-list-item-text {\n font-weight: 400;\n }\n}\n\n/* 限制文本高度 */\n.mdui-list-item-one-line,\n.mdui-list-item-two-line,\n.mdui-list-item-three-line {\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n -webkit-box-orient: vertical;\n}\n.mdui-list-item-one-line {\n -webkit-line-clamp: 1;\n height: 20px;\n}\n.mdui-list-item-two-line {\n -webkit-line-clamp: 2;\n height: 40px;\n}\n.mdui-list-item-three-line {\n -webkit-line-clamp: 3;\n height: 60px;\n}\n\n/* 列表项内的元素间添加间距 */\n.mdui-list-item-icon {\n ~ .mdui-list-item-content {\n margin-left: 32px;\n }\n}\n.mdui-checkbox,\n.mdui-radio,\n.mdui-switch {\n ~ .mdui-list-item-content {\n margin-left: 20px;\n }\n}\n\n\n.mdui-list-item-avatar {\n ~ .mdui-list-item-content {\n margin-left: 16px;\n }\n}\n.mdui-list-item-content {\n ~ .mdui-list-item-icon,\n ~ .mdui-list-item-avatar,\n ~ .mdui-checkbox,\n ~ .mdui-radio,\n ~ .mdui-switch {\n margin-left: 16px;\n }\n\n ~ .mdui-checkbox,\n ~ .mdui-radio {\n padding-left: 24px;\n }\n}\n\n/* 密集型列表 */\n.mdui-list-dense {\n padding: 4px 0;\n font-size: 13px;\n\n &>.mdui-divider,\n &>.mdui-divider-light,\n &>.mdui-divider-dark,\n &>.mdui-divider-inset,\n &>.mdui-divider-inset-light,\n &>.mdui-divider-inset-dark {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n // 副标题\n .mdui-subheader,\n .mdui-subheader-inset {\n height: 40px;\n margin-top: 4px;\n font-size: 12px;\n line-height: 40px;\n\n &:first-child {\n margin-top: -4px;\n }\n }\n\n // 密集型列表项\n .mdui-list-item {\n min-height: 40px;\n\n &::after {\n height: 40px;\n }\n }\n\n // 图标\n .mdui-list-item-icon {\n width: 20px;\n height: 20px;\n font-size: 20px;\n }\n\n // 头像\n .mdui-list-item-avatar {\n width: 36px;\n min-width: 36px;\n height: 36px;\n min-height: 36px;\n }\n\n // 列表项内容\n .mdui-list-item-content {\n padding-top: 11px;\n padding-bottom: 11px;\n font-size: 13px;\n line-height: 18px;\n }\n .mdui-list-item-text {\n font-size: 13px;\n }\n .mdui-list-item-title {\n ~ .mdui-list-item-text {\n margin-top: 2px;\n }\n }\n\n // 限制文本高度\n .mdui-list-item-one-line {\n height: 18px;\n }\n .mdui-list-item-two-line {\n height: 36px;\n }\n .mdui-list-item-three-line {\n height: 54px;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ List dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-list {\n // 副标题的分割线\n .mdui-subheader,\n .mdui-subheader-inset {\n &::before {\n background-color: @color-white-divider;\n }\n\n &:first-child {\n &::before {\n background-color: transparent;\n }\n }\n }\n }\n\n // 列表项\n .mdui-list-item {\n color: @color-white-text;\n\n &:hover {\n background-color: @color-hover-white;\n }\n }\n\n // 列表项图标\n .mdui-list-item-icon {\n color: @color-white-icon;\n }\n\n // 列表内容副内容\n .mdui-list-item-text {\n opacity: @opacity-white-secondary;\n }\n\n // 激活状态的列表项\n .mdui-list-item-active {\n background-color: @color-hover-white;\n }\n});\n\n/**\n * ==============================================================================\n * ************ List inner theme ************\n * ==============================================================================\n */\n[class*=\"mdui-color-\"] {\n .mdui-list-item {\n color: inherit;\n }\n .mdui-list-item-icon {\n color: inherit;\n }\n}\n","/**\n * =============================================================================\n * ************ Drawer 抽屉栏导航 ************\n * =============================================================================\n */\n\n/* DOM 加载完后再添加 transition */\nbody.mdui-loaded {\n transition: padding .3s @animation-curve-linear-out-slow-in;\n}\nbody.mdui-loaded .mdui-drawer {\n transition: all .3s @animation-curve-linear-out-slow-in;\n}\n\n/* 抽屉栏外层,默认出现在左侧且隐藏 */\n.mdui-drawer {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n z-index: @z-index-drawer;\n box-sizing: border-box;\n\n // 手机端宽度为 100% - 56px,最大为 280px\n /* stylelint-disable-next-line */\n width: calc(~\"100% - 56px\");\n max-width: @drawer-width-xs;\n margin: 0;\n overflow-x: hidden;\n overflow-y: auto;\n white-space: nowrap;\n will-change: transform;\n -webkit-overflow-scrolling: touch;\n\n // 隐藏时不显示阴影\n @media (max-width: @screen-sm-max) {\n &:not(.mdui-drawer-open) {\n box-shadow: none !important;\n }\n }\n\n // 平板端宽度为 100% - 64px,最大为 320px\n @media (min-width: @screen-sm-min) {\n /* stylelint-disable-next-line */\n width: calc(~\"100% - 64px\");\n max-width: @drawer-width-sm;\n }\n\n // 桌面端宽度\n @media (min-width: @screen-md-min) {\n width: @drawer-width-md;\n max-width: none;\n\n // 隐藏时不显示阴影\n &.mdui-drawer-close {\n box-shadow: none !important;\n }\n }\n}\n\n/* 出现在右侧的抽屉栏 */\n.mdui-drawer-right {\n right: 0;\n left: auto;\n}\n\n/* 平板上的样式 */\n@media (max-width: @screen-sm-max) {\n .mdui-drawer {\n /* 始终有背景和阴影 */\n background-color: #fff;\n\n /* 默认隐藏 */\n transform: translateX(-@drawer-width-sm - 10);\n .mdui-shadow(16);\n }\n\n .mdui-drawer-right {\n /* 右侧 drawer 也默认隐藏 */\n transform: translateX(@drawer-width-sm + 10);\n }\n}\n\n/* 手机上的样式 */\n@media (max-width: @screen-xs-max) {\n .mdui-drawer {\n transform: translateX(-@drawer-width-xs - 10);\n }\n\n .mdui-drawer-right {\n transform: translateX(@drawer-width-xs + 10);\n }\n}\n\n/* 强制隐藏抽屉栏 */\n._drawer_close(@drawer-width) {\n .mdui-drawer-close {\n transform: translateX(-@drawer-width - 10);\n &.mdui-drawer-right {\n transform: translateX(@drawer-width + 10);\n }\n }\n}\n\n._drawer_close(@drawer-width-xs);\n\n@media (min-width: @screen-sm-min) {\n ._drawer_close(@drawer-width-sm);\n}\n\n@media (min-width: @screen-md-min) {\n ._drawer_close(@drawer-width-md);\n}\n\n/* 强制显示抽屉栏 */\n.mdui-drawer-open {\n transform: translateX(0) !important;\n}\n\n/* PC 上的样式 */\n@media (min-width: @screen-md-min) {\n /* 使该类所在元素获得 padding-left 或 padding-right,避免被抽屉栏覆盖住页面 */\n .mdui-drawer-body-left {\n padding-left: @drawer-width-md;\n }\n .mdui-drawer-body-right {\n padding-right: @drawer-width-md;\n }\n\n /* PC 上默认有上边距 */\n .mdui-drawer {\n .mdui-appbar-with-toolbar & {\n top: @appbar-height-sm;\n }\n\n .mdui-appbar-with-tab & {\n top: 48px;\n }\n\n .mdui-appbar-with-tab-larger & {\n top: 72px;\n }\n\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab & {\n top: @appbar-height-sm + 48px;\n }\n\n .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger & {\n top: @appbar-height-sm + 72px;\n }\n }\n}\n\n/* 抽屉栏不是透明时添加阴影 */\n.mdui-drawer[class*=\"mdui-color-\"]:not(.mdui-color-transparent) {\n .mdui-shadow(16);\n}\n\n/* 抽屉栏 100% 高度,覆盖在导航栏上面 */\n.mdui-drawer-full-height {\n top: 0 !important;\n}\n\n\n/**\n * =============================================================================\n * ************ Drawer dark ************\n * =============================================================================\n */\n.layout-theme({\n // 手机平板上的样式\n @media (max-width: @screen-sm-max) {\n .mdui-drawer {\n background-color: @layout-dark-color-4;\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Dialog 提示框 ************\n * =============================================================================\n */\n\n@import '../button/index';\n\n.mdui-dialog {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @z-index-dialog;\n display: none;\n box-sizing: border-box;\n width: 92%;\n min-width: 180px;\n max-width: 728px;\n max-height: 90%;\n margin: auto;\n overflow: hidden;\n color: #000;\n background-color: #fff;\n border-radius: 2px;\n transform: scale(0.95);\n opacity: 0;\n transition-duration: .3s;\n transition-property: transform, opacity, visibility;\n will-change: top, opacity, transform;\n\n @media (min-width: @screen-sm-min) {\n width: 85%;\n max-height: 85%;\n }\n @media (min-width: @screen-md-min) {\n width: 80%;\n max-height: 80%;\n }\n\n .mdui-shadow(24);\n}\n\n/* 打开提示框 */\n.mdui-dialog-open {\n transform: scale(1);\n opacity: 1;\n}\n\n/* 提示框标题 */\n.mdui-dialog-title {\n box-sizing: border-box;\n font-weight: 500;\n font-size: 20px;\n line-height: 24px;\n text-align: left;\n}\n\n/* 标题固定在顶部 */\n.mdui-dialog>.mdui-dialog-title {\n padding: 24px 24px 20px 24px;\n}\n\n/* 提示框内容 */\n.mdui-dialog-content {\n box-sizing: border-box;\n padding: 24px;\n overflow-y: auto;\n color: rgba(0, 0, 0, 0.7);\n font-size: 15px;\n line-height: 1.5;\n -webkit-overflow-scrolling: touch;\n}\n\n/* 标题随内容滚动 */\n.mdui-dialog-content>.mdui-dialog-title {\n padding-bottom: 20px;\n}\n\n.mdui-dialog-title + .mdui-dialog-content {\n padding-top: 0;\n}\n\n/* 提示框底部按钮 */\n.mdui-dialog-actions {\n box-sizing: border-box;\n padding: 8px;\n text-align: right;\n .mdui-btn {\n min-width: 64px;\n margin-left: 8px;\n .mdui-text-color(@color-accent-default-name);\n &:first-child {\n margin-left: 0;\n }\n }\n}\n\n/* 底部按钮滚随内容动 */\n.mdui-dialog-content>.mdui-dialog-actions {\n margin: 0 -24px -24px -24px;\n padding-top: 32px;\n}\n\n/* 使提示框底部按钮竖排 */\n.mdui-dialog-actions-stacked {\n padding: 8px 0 8px 0;\n .mdui-btn {\n width: 100%;\n height: 48px;\n margin: 0;\n line-height: 48px !important;\n text-align: right;\n border-radius: 0;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Dialog 强调色 ************\n * =============================================================================\n */\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n .mdui-dialog-actions {\n .mdui-btn {\n .mdui-text-color(@colorName);\n }\n }\n }\n\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Dialog dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-dialog {\n color: #fff;\n background-color: @layout-dark-color-4;\n }\n .mdui-dialog-content {\n color: rgba(255, 255, 255, 0.7);\n }\n});\n","/**\n * =============================================================================\n * ************ Dialog alert ************\n * =============================================================================\n */\n\n @import './index';\n\n.mdui-dialog-alert {\n max-width: 448px;\n}\n","/**\n * =============================================================================\n * ************ Dialog confirm ************\n * =============================================================================\n */\n\n @import './index';\n\n.mdui-dialog-confirm {\n max-width: 448px;\n}\n","/**\n * =============================================================================\n * ************ Dialog prompt ************\n * =============================================================================\n */\n\n@import '../textfield/index';\n@import './index';\n\n.mdui-dialog-prompt {\n max-width: 448px;\n\n .mdui-textfield {\n padding-top: 0;\n }\n}\n","/**\n * =============================================================================\n * ************ Tooltip 工具提示 ************\n * =============================================================================\n */\n\n.mdui-tooltip {\n position: absolute;\n z-index: @z-index-tooltip;\n display: inline-block;\n box-sizing: border-box;\n max-width: 180px;\n min-height: 32px;\n padding: 8px 16px;\n color: #fff;\n font-weight: 500;\n\n // 移动端样式\n font-size: 14px;\n line-height: 22px;\n text-align: left;\n background-color: rgba(red(@color-grey-700), green(@color-grey-700), blue(@color-grey-700), 0.9);\n border-radius: 2px;\n transform: scale(0);\n opacity: 0;\n transition-timing-function: @animation-curve-default;\n transition-duration: 0.15s;\n transition-property: opacity, transform;\n will-change: opacity, transform;\n\n // 桌面端样式\n @media (min-width: @screen-md-min) {\n max-width: 200px;\n min-height: 24px;\n padding: 4px 8px;\n font-size: 12px;\n line-height: 18px;\n }\n}\n\n/* 显示工具提示 */\n.mdui-tooltip-open {\n transform: scale(1);\n opacity: 1;\n}","/**\n * =============================================================================\n * ************ Snackbar ************\n * =============================================================================\n */\n\n@import '../button/index';\n\n.mdui-snackbar {\n position: fixed;\n z-index: @z-index-snackbar;\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n\n // 手机端的样式\n width: 100%;\n min-height: 48px;\n padding: 0 24px 0 24px;\n color: #fff;\n font-size: 14px;\n line-height: 20px;\n background-color: #323232;\n will-change: transform;\n\n // 平板、桌面端样式\n @media (min-width: @screen-sm-min) {\n width: auto;\n min-width: 288px;\n max-width: 568px;\n border-radius: 2px;\n }\n}\n\n.mdui-snackbar-bottom,\n.mdui-snackbar-top,\n.mdui-snackbar-left-top,\n.mdui-snackbar-left-bottom,\n.mdui-snackbar-right-top,\n.mdui-snackbar-right-bottom {\n transition: transform .3s @animation-curve-default;\n}\n\n/* 位置 */\n.mdui-snackbar-bottom,\n.mdui-snackbar-left-bottom,\n.mdui-snackbar-right-bottom {\n bottom: 0;\n}\n\n.mdui-snackbar-top,\n.mdui-snackbar-left-top,\n.mdui-snackbar-right-top {\n top: 0;\n}\n\n.mdui-snackbar-top,\n.mdui-snackbar-bottom {\n left: 50%;\n}\n\n// 平板、桌面端位置\n@media (min-width: @screen-sm-min) {\n .mdui-snackbar-left-top {\n top: 24px;\n left: 24px;\n }\n\n .mdui-snackbar-left-bottom {\n bottom: 24px;\n left: 24px;\n }\n\n .mdui-snackbar-right-top {\n top: 24px;\n right: 24px;\n }\n\n .mdui-snackbar-right-bottom {\n right: 24px;\n bottom: 24px;\n }\n}\n\n/* 文本 */\n.mdui-snackbar-text {\n position: relative;\n max-width: 100%;\n padding: 14px 0 14px 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* 按钮 */\n.mdui-snackbar-action {\n margin-right: -16px;\n white-space: nowrap;\n .mdui-text-color(@color-accent-default-name, a100);\n}\n\n\n/**\n * =============================================================================\n * ************ Snackbar 强调色 ************\n * =============================================================================\n */\n& {\n .loop-accent-theme(@counter-color) when (@counter-color > 0) {\n .loop-accent-theme((@counter-color - 1));\n @colorName: extract(@globalAccentColors, @counter-color);\n\n .mdui-theme-accent-@{colorName} when not (@colorName = null) {\n .mdui-snackbar-action {\n .mdui-text-color(@colorName, a100);\n }\n }\n\n }\n .loop-accent-theme(length(@globalAccentColors));\n}\n\n\n/**\n * =============================================================================\n * ************ Snackbar dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-snackbar {\n background-color: #5d5d5d;\n }\n});\n","/**\n * =============================================================================\n * ************ Chip 纸片 ************\n * =============================================================================\n */\n\n@chip-height: 32px;\n\n.mdui-chip {\n display: inline-block;\n box-sizing: border-box;\n height: @chip-height;\n margin: 2px 0;\n color: inherit;\n white-space: nowrap;\n background-color: #e0e0e0;\n border-radius: @chip-height / 2;\n cursor: pointer;\n user-select: none;\n .mdui-hoverable(2);\n\n &:active {\n background-color: #d6d6d6;\n }\n}\n\n/* 左侧的图标 */\n.mdui-chip-icon {\n position: relative;\n display: inline-block;\n width: @chip-height;\n height: @chip-height;\n margin-right: -4px;\n overflow: hidden;\n color: #fff;\n font-size: 18px;\n line-height: @chip-height;\n text-align: center;\n vertical-align: middle;\n background-color: #989898;\n border-radius: 50%;\n\n .mdui-icon {\n position: absolute;\n top: 4px;\n left: 4px;\n color: #fff;\n }\n}\n\n/* 文本 */\n.mdui-chip-title {\n display: inline-block;\n height: @chip-height;\n padding-right: 12px;\n padding-left: 12px;\n font-size: 14px;\n line-height: @chip-height;\n vertical-align: middle;\n}\n\n/* 删除按钮 */\n.mdui-chip-delete {\n display: inline-block;\n width: 24px;\n height: 24px;\n margin-right: 4px;\n margin-left: -8px;\n overflow: hidden;\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n border-radius: 50%;\n cursor: pointer;\n opacity: .54;\n transition: opacity .25s @animation-curve-default;\n will-change: opacity;\n &:hover,\n &:focus {\n opacity: .87;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Chip dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-chip {\n background-color: #484848;\n &:active {\n background-color: #5d5d5d;\n }\n }\n});\n","/**\n * =============================================================================\n * ************ Bottom navigation 底部导航栏 ************\n * =============================================================================\n */\n\n@import '../headroom/index';\n\n.mdui-bottom-nav {\n position: relative;\n display: flex;\n height: 56px;\n margin: 0 auto;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n\n @media (min-width: @screen-sm-min) {\n &::before {\n flex-grow: 1;\n content: ' ';\n }\n &::after {\n flex-grow: 1;\n content: ' ';\n }\n }\n\n a {\n display: flex;\n flex: 1;\n\n // 使图标和文本垂直排列\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-width: 32px;\n max-width: none;\n padding: 8px 12px 10px 12px;\n overflow: hidden;\n color: inherit;\n font-size: 12px;\n text-align: center;\n text-decoration: none;\n text-overflow: ellipsis;\n cursor: pointer;\n opacity: 0.7;\n transition: all .2s @animation-curve-default ;\n user-select: none;\n will-change: padding;\n\n @media (min-width: @screen-sm-min) {\n max-width: 144px;\n }\n\n .mdui-icon {\n opacity: 0.7;\n }\n\n label {;\n display: block;\n width: 100%;\n cursor: pointer;\n transition: transform .2s @animation-curve-default ;\n will-change: font-size;\n }\n\n .mdui-icon + label {\n margin-top: 6px;\n }\n\n // 激活状态的导航项\n &.mdui-bottom-nav-active {\n color: @color-default-500;\n font-size: 14px;\n opacity: 1;\n\n .mdui-icon {\n opacity: 1;\n }\n }\n }\n}\n\n/* 只在激活时显示文本 */\n&.mdui-bottom-nav-text-auto {\n a {\n min-width: 32px;\n padding-right: 0;\n padding-left: 0;\n @media (min-width: @screen-sm-min) {\n max-width: 156px;\n }\n .mdui-icon {\n padding-top: 16px;\n transition: padding-top .2s @animation-curve-default;\n will-change: padding-top;\n }\n label {\n transform: scale(0);\n }\n\n &.mdui-bottom-nav-active {\n padding-right: 18px;\n padding-left: 18px;\n .mdui-icon {\n padding-top: 0;\n }\n label {\n transform: scale(1);\n }\n }\n }\n}\n\n/* 固定到页面底部 */\n.mdui-bottom-nav-fixed {\n .mdui-bottom-nav {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n padding-bottom: 56px;\n}\n\n/**\n * =============================================================================\n * ************ Bottom Nav 主色 ************\n * =============================================================================\n */\n\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n @colorName: extract(@globalPrimaryColors, @counter-color);\n @color: 'color-@{colorName}-500';\n\n .mdui-theme-primary-@{colorName} when not (@colorName = null) {\n .mdui-bottom-nav a.mdui-bottom-nav-active {\n color: @@color;\n }\n }\n\n }\n .loop-primary-theme(length(@globalPrimaryColors));\n}\n\n/* 带背景色的底部导航栏 */\n.mdui-bottom-nav[class*=\"mdui-color-\"] {\n .mdui-bottom-nav-active {\n color: inherit !important;\n }\n}\n","/**\n * =============================================================================\n * ************ Progress Linear 线性进度条 ************\n * =============================================================================\n */\n\n/* 线性进度条 */\n.mdui-progress {\n position: relative;\n display: block;\n width: 100%;\n height: 4px;\n overflow: hidden;\n background-color: rgba(red(@color-default-500), green(@color-default-500), blue(@color-default-500), .2);\n border-radius: 2px;\n}\n\n/* 确定进度的线性进度条 */\n.mdui-progress-determinate {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: @color-default-500;\n transition: width .3s linear;\n}\n\n/* 不确定进度的线性进度条 */\n.mdui-progress-indeterminate {\n background-color: @color-default-500;\n\n &::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: inherit;\n animation: mdui-progress-indeterminate 2s linear infinite;\n content: ' ';\n will-change: left, width;\n }\n\n &::after {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: inherit;\n animation: mdui-progress-indeterminate-short 2s linear infinite;\n content: ' ';\n will-change: left, width;\n }\n}\n\n@keyframes mdui-progress-indeterminate {\n 0% {\n left: 0;\n width: 0;\n }\n 50% {\n left: 30%;\n width: 70%;\n }\n 75% {\n left: 100%;\n width: 0;\n }\n}\n\n@keyframes mdui-progress-indeterminate-short {\n 0% {\n left: 0;\n width: 0;\n }\n 50% {\n left: 0;\n width: 0;\n }\n 75% {\n left: 0;\n width: 25%;\n }\n 100% {\n left: 100%;\n width: 0;\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Progress linear 主色 ************\n * =============================================================================\n */\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n @colorName: extract(@globalPrimaryColors, @counter-color);\n @color: 'color-@{colorName}-500';\n\n .mdui-theme-primary-@{colorName} when not (@colorName = null) {\n .mdui-progress {\n background-color: rgba(red(@@color), green(@@color), blue(@@color), .2);\n }\n .mdui-progress-determinate,\n .mdui-progress-indeterminate {\n .mdui-background-color(@colorName);\n }\n }\n\n }\n .loop-primary-theme(length(@globalPrimaryColors));\n}\n","/**\n * =============================================================================\n * ************ Progress Circular 圆形进度条 ************\n * =============================================================================\n */\n\n.mdui-spinner {\n position: relative;\n display: inline-block;\n width: 28px;\n height: 28px;\n animation: mdui-spinner 1568ms linear infinite;\n}\n\n@keyframes mdui-spinner {\n to {\n transform: rotate(360deg);\n }\n}\n\n.mdui-spinner-layer {\n position: absolute;\n width: 100%;\n height: 100%;\n border-color: @color-default-500;\n opacity: 0;\n opacity: 1;\n animation: mdui-spinner-layer-fill-unfill-rotate 5332ms @animation-curve-default infinite both;\n}\n\n.mdui-spinner-layer-1 {\n border-color: @color-blue-400 !important;\n animation:\n mdui-spinner-layer-fill-unfill-rotate 5332ms @animation-curve-default infinite both,\n mdui-spinner-layer-1-fade-in-out 5332ms @animation-curve-default infinite both;\n}\n\n.mdui-spinner-layer-2 {\n border-color: @color-red-500 !important;\n animation:\n mdui-spinner-layer-fill-unfill-rotate 5332ms @animation-curve-default infinite both,\n mdui-spinner-layer-2-fade-in-out 5332ms @animation-curve-default infinite both;\n}\n\n.mdui-spinner-layer-3 {\n border-color: @color-yellow-600 !important;\n animation:\n mdui-spinner-layer-fill-unfill-rotate 5332ms @animation-curve-default infinite both,\n mdui-spinner-layer-3-fade-in-out 5332ms @animation-curve-default infinite both;\n}\n\n.mdui-spinner-layer-4 {\n border-color: @color-green-500 !important;\n animation:\n mdui-spinner-layer-fill-unfill-rotate 5332ms @animation-curve-default infinite both,\n mdui-spinner-layer-4-fade-in-out 5332ms @animation-curve-default infinite both;\n}\n\n@keyframes mdui-spinner-layer-fill-unfill-rotate {\n 12.5% { transform: rotate(135deg); }\n 25% { transform: rotate(270deg); }\n 37.5% { transform: rotate(405deg); }\n 50% { transform: rotate(540deg); }\n 62.5% { transform: rotate(675deg); }\n 75% { transform: rotate(810deg); }\n 87.5% { transform: rotate(945deg); }\n to { transform: rotate(1080deg); }\n}\n\n@keyframes mdui-spinner-layer-1-fade-in-out {\n from { opacity: 1; }\n 25% { opacity: 1; }\n 26% { opacity: 0; }\n 89% { opacity: 0; }\n 90% { opacity: 1; }\n 100% { opacity: 1; }\n}\n\n@keyframes mdui-spinner-layer-2-fade-in-out {\n from { opacity: 0; }\n 15% { opacity: 0; }\n 25% { opacity: 1; }\n 50% { opacity: 1; }\n 51% { opacity: 0; }\n}\n\n@keyframes mdui-spinner-layer-3-fade-in-out {\n from { opacity: 0; }\n 40% { opacity: 0; }\n 50% { opacity: 1; }\n 75% { opacity: 1; }\n 76% { opacity: 0; }\n}\n\n@keyframes mdui-spinner-layer-4-fade-in-out {\n from { opacity: 0; }\n 65% { opacity: 0; }\n 75% { opacity: 1; }\n 90% { opacity: 1; }\n 100% { opacity: 0; }\n}\n\n.mdui-spinner-gap-patch {\n position: absolute;\n top: 0;\n left: 45%;\n width: 10%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n\n .mdui-spinner-circle {\n left: -450%;\n box-sizing: border-box;\n width: 1000%;\n }\n}\n\n.mdui-spinner-circle-clipper {\n position: relative;\n display: inline-block;\n width: 50%;\n height: 100%;\n overflow: hidden;\n border-color: inherit;\n\n .mdui-spinner-circle {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n box-sizing: border-box;\n width: 200%;\n height: 100%;\n border-color: inherit;\n border-style: solid;\n border-width: 3px;\n border-bottom-color: transparent !important;\n border-radius: 50%;\n animation: none;\n }\n\n &.mdui-spinner-left {\n float: left;\n\n .mdui-spinner-circle {\n left: 0;\n border-right-color: transparent !important;\n transform: rotate(129deg);\n animation: mdui-spinner-left-spin 1333ms @animation-curve-default infinite both;\n }\n }\n\n &.mdui-spinner-right {\n float: right;\n\n .mdui-spinner-circle {\n left: -100%;\n border-left-color: transparent !important;\n transform: rotate(-129deg);\n animation: mdui-spinner-right-spin 1333ms @animation-curve-default infinite both;\n }\n }\n}\n\n@keyframes mdui-spinner-left-spin {\n from { transform: rotate(130deg); }\n 50% { transform: rotate(-5deg); }\n to { transform: rotate(130deg); }\n}\n\n@keyframes mdui-spinner-right-spin {\n from { transform: rotate(-130deg); }\n 50% { transform: rotate(5deg); }\n to { transform: rotate(-130deg); }\n}\n\n\n/**\n * =============================================================================\n * ************ Spinner linear 主色 ************\n * =============================================================================\n */\n& {\n .loop-primary-theme(@counter-color) when (@counter-color > 0) {\n .loop-primary-theme((@counter-color - 1));\n @colorName: extract(@globalPrimaryColors, @counter-color);\n @color: 'color-@{colorName}-500';\n\n .mdui-theme-primary-@{colorName} when not (@colorName = null) {\n .mdui-spinner-layer {\n border-color: @@color;\n }\n }\n\n }\n .loop-primary-theme(length(@globalPrimaryColors));\n}\n","/**\n * =============================================================================\n * ************ Menu 菜单 ************\n * =============================================================================\n */\n\n// 普通菜单宽度基数\n@menu-simple-x: 56px;\n\n// 级联菜单宽度基数\n@menu-cascade-x: 64px;\n\n/* 菜单 */\n.mdui-menu {\n position: fixed;\n z-index: 99999;\n display: block;\n box-sizing: border-box;\n width: @menu-simple-x * 3;\n margin: 0;\n padding: 8px 0;\n\n // 简单菜单高度超出窗口高度时,使菜单边框和窗口保持一定距离,菜单内出现滚动条\n overflow-y: auto;\n color: @color-black-text;\n font-size: 16px;\n list-style: none;\n background-color: #fff;\n border-radius: 2px;\n transform: scale(0);\n visibility: hidden;\n opacity: 0;\n transition-timing-function: @animation-curve-linear-out-slow-in;\n transition-duration: .3s;\n transition-property: transform, opacity, visibility;\n will-change: transform, opacity, visibility;\n -webkit-overflow-scrolling: touch;\n .mdui-shadow(8);\n\n // 菜单中的分隔线,默认上下有 8px 的外边距\n .mdui-divider {\n margin-top: 8px;\n margin-bottom: 8px;\n }\n}\n\n/* 打开状态的菜单 */\n.mdui-menu-open {\n transform: scale(1);\n visibility: visible;\n opacity: 1;\n}\n\n/* 关闭中的菜单 */\n.mdui-menu-closing {\n transform: scale(1);\n visibility: visible;\n opacity: 0;\n}\n\n/* 菜单项 */\n.mdui-menu-item {\n position: relative;\n\n &>a {\n position: relative;\n display: block;\n height: 48px;\n padding: 0 16px;\n color: inherit;\n line-height: 48px;\n text-decoration: none;\n user-select: none;\n .mdui-text-truncate();\n\n &:hover {\n background-color: @color-grey-200;\n }\n }\n\n // 子菜单默认隐藏,阴影更深\n &>.mdui-menu {\n position: absolute;\n .mdui-shadow(9);\n }\n\n // 禁用的菜单条目\n &[disabled] {\n &>a {\n color: @color-black-disabled !important;\n cursor: default;\n\n &:hover {\n background-color: inherit !important;\n }\n\n .mdui-icon {\n color: @color-black-icon-disabled;\n }\n }\n }\n}\n\n/* 激活状态的菜单项 */\n.mdui-menu-item-active {\n background-color: @color-grey-200;\n}\n\n/* 菜单中的图标 */\n.mdui-menu-item-icon {\n display: inline-block;\n box-sizing: border-box;\n width: 40px;\n padding-right: 16px;\n color: @color-black-icon;\n}\n\n/* 菜单中的辅助文本或图标 */\n.mdui-menu-item-helper {\n float: right;\n}\n\n/* 有子菜单的条目的图标 */\n.mdui-menu-item-more {\n float: right;\n width: 24px;\n height: 24px;\n margin: 4px 0;\n //background-image: data-uri('image/svg+xml', './components/menu/svg/arrow_right_dark.svg');\n // https://www.zhangxinxu.com/sp/svgo/ CSS 转义\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' opacity='.54'/%3E%3C/svg%3E\");\n}\n\n\n/* 级联菜单 */\n.mdui-menu-cascade {\n width: @menu-cascade-x * 5;\n padding: 16px 0;\n\n // 级联菜单内部不出现滚动条\n overflow-y: visible;\n font-size: 15px;\n\n &>.mdui-menu-item {\n &>a {\n height: 32px;\n padding: 0 24px;\n line-height: 32px;\n }\n }\n}\n\n\n/**\n * =============================================================================\n * ************ Menu dark ************\n * =============================================================================\n */\n.layout-theme({\n .mdui-menu {\n color: #fff;\n background-color: @layout-dark-color-4;\n }\n\n .mdui-menu-item {\n &>a {\n &:hover {\n background-color: @color-grey-700;\n }\n }\n\n &[disabled] {\n &>a {\n color: @color-white-disabled !important;\n\n .mdui-icon {\n color: @color-white-icon-disabled;\n }\n }\n }\n }\n\n .mdui-menu-item-active {\n background-color: @color-grey-700;\n }\n\n .mdui-menu-item-icon {\n color: @color-white-icon;\n }\n\n .mdui-menu-item-more {\n //background-image: data-uri('image/svg+xml', './components/menu/svg/arrow_right_light.svg');\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 17.5l5-5-5-5z' fill='%23FFF'/%3E%3C/svg%3E\");\n }\n});\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 9807b23..9d84752 100644 --- a/index.html +++ b/index.html @@ -6,18 +6,18 @@ - +
- Srun3K Login + Srun3K Boxies
account_circle - close
- -
-
-
-

用户名

- -
-
-

密码

- -
+ close +
+
+ home + build
-
+ + +
+
+
+
+
+

用户名

+ +
+
+

密码

+ +
+
+
- -
+
+

登陆状态

- -

+ +

+

流量使用统计

+
+
+
+

已用 Null G

- + +
-
- +
+
+ + +
+
+
+
+

强制注销

+

适用于无法注销账户的问题以及各种奇奇怪怪的问题

+ + +
+ +
+ +
+

关于

+

作者@pete 请合理使用本应用 开源在 https://github.com/peterpei1186861238/Srun3k-Boxies 下

+
+
+
+
Notice
被你发现了!!!
-
- -
-
+ - + \ No newline at end of file diff --git a/js/mdui.esm.js b/js/mdui.esm.js deleted file mode 100644 index d8eb8ec..0000000 --- a/js/mdui.esm.js +++ /dev/null @@ -1,5970 +0,0 @@ -/*! - * mdui 1.0.0 (https://mdui.org) - * Copyright 2016-2020 zdhxiong - * Licensed under MIT - */ -function isFunction(target) { - return typeof target === 'function'; -} -function isString(target) { - return typeof target === 'string'; -} -function isNumber(target) { - return typeof target === 'number'; -} -function isBoolean(target) { - return typeof target === 'boolean'; -} -function isUndefined(target) { - return typeof target === 'undefined'; -} -function isNull(target) { - return target === null; -} -function isWindow(target) { - return target instanceof Window; -} -function isDocument(target) { - return target instanceof Document; -} -function isElement(target) { - return target instanceof Element; -} -function isNode(target) { - return target instanceof Node; -} -/** - * 是否是 IE 浏览器 - */ -function isIE() { - // @ts-ignore - return !!window.document.documentMode; -} -function isArrayLike(target) { - if (isFunction(target) || isWindow(target)) { - return false; - } - return isNumber(target.length); -} -function isObjectLike(target) { - return typeof target === 'object' && target !== null; -} -function toElement(target) { - return isDocument(target) ? target.documentElement : target; -} -/** - * 把用 - 分隔的字符串转为驼峰(如 box-sizing 转换为 boxSizing) - * @param string - */ -function toCamelCase(string) { - return string - .replace(/^-ms-/, 'ms-') - .replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()); -} -/** - * 把驼峰法转为用 - 分隔的字符串(如 boxSizing 转换为 box-sizing) - * @param string - */ -function toKebabCase(string) { - return string.replace(/[A-Z]/g, (replacer) => '-' + replacer.toLowerCase()); -} -/** - * 获取元素的样式值 - * @param element - * @param name - */ -function getComputedStyleValue(element, name) { - return window.getComputedStyle(element).getPropertyValue(toKebabCase(name)); -} -/** - * 检查元素的 box-sizing 是否是 border-box - * @param element - */ -function isBorderBox(element) { - return getComputedStyleValue(element, 'box-sizing') === 'border-box'; -} -/** - * 获取元素的 padding, border, margin 宽度(两侧宽度的和,单位为px) - * @param element - * @param direction - * @param extra - */ -function getExtraWidth(element, direction, extra) { - const position = direction === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom']; - return [0, 1].reduce((prev, _, index) => { - let prop = extra + position[index]; - if (extra === 'border') { - prop += 'Width'; - } - return prev + parseFloat(getComputedStyleValue(element, prop) || '0'); - }, 0); -} -/** - * 获取元素的样式值,对 width 和 height 进行过处理 - * @param element - * @param name - */ -function getStyle(element, name) { - // width、height 属性使用 getComputedStyle 得到的值不准确,需要使用 getBoundingClientRect 获取 - if (name === 'width' || name === 'height') { - const valueNumber = element.getBoundingClientRect()[name]; - if (isBorderBox(element)) { - return `${valueNumber}px`; - } - return `${valueNumber - - getExtraWidth(element, name, 'border') - - getExtraWidth(element, name, 'padding')}px`; - } - return getComputedStyleValue(element, name); -} -/** - * 获取子节点组成的数组 - * @param target - * @param parent - */ -function getChildNodesArray(target, parent) { - const tempParent = document.createElement(parent); - tempParent.innerHTML = target; - return [].slice.call(tempParent.childNodes); -} -/** - * 始终返回 false 的函数 - */ -function returnFalse() { - return false; -} -/** - * 数值单位的 CSS 属性 - */ -const cssNumber = [ - 'animationIterationCount', - 'columnCount', - 'fillOpacity', - 'flexGrow', - 'flexShrink', - 'fontWeight', - 'gridArea', - 'gridColumn', - 'gridColumnEnd', - 'gridColumnStart', - 'gridRow', - 'gridRowEnd', - 'gridRowStart', - 'lineHeight', - 'opacity', - 'order', - 'orphans', - 'widows', - 'zIndex', - 'zoom', -]; - -function each(target, callback) { - if (isArrayLike(target)) { - for (let i = 0; i < target.length; i += 1) { - if (callback.call(target[i], i, target[i]) === false) { - return target; - } - } - } - else { - const keys = Object.keys(target); - for (let i = 0; i < keys.length; i += 1) { - if (callback.call(target[keys[i]], keys[i], target[keys[i]]) === false) { - return target; - } - } - } - return target; -} - -/** - * 为了使用模块扩充,这里不能使用默认导出 - */ -class JQ { - constructor(arr) { - this.length = 0; - if (!arr) { - return this; - } - each(arr, (i, item) => { - // @ts-ignore - this[i] = item; - }); - this.length = arr.length; - return this; - } -} - -function get$() { - const $ = function (selector) { - if (!selector) { - return new JQ(); - } - // JQ - if (selector instanceof JQ) { - return selector; - } - // function - if (isFunction(selector)) { - if (/complete|loaded|interactive/.test(document.readyState) && - document.body) { - selector.call(document, $); - } - else { - document.addEventListener('DOMContentLoaded', () => selector.call(document, $), false); - } - return new JQ([document]); - } - // String - if (isString(selector)) { - const html = selector.trim(); - // 根据 HTML 字符串创建 JQ 对象 - if (html[0] === '<' && html[html.length - 1] === '>') { - let toCreate = 'div'; - const tags = { - li: 'ul', - tr: 'tbody', - td: 'tr', - th: 'tr', - tbody: 'table', - option: 'select', - }; - each(tags, (childTag, parentTag) => { - if (html.indexOf(`<${childTag}`) === 0) { - toCreate = parentTag; - return false; - } - return; - }); - return new JQ(getChildNodesArray(html, toCreate)); - } - // 根据 CSS 选择器创建 JQ 对象 - const isIdSelector = selector[0] === '#' && !selector.match(/[ .<>:~]/); - if (!isIdSelector) { - return new JQ(document.querySelectorAll(selector)); - } - const element = document.getElementById(selector.slice(1)); - if (element) { - return new JQ([element]); - } - return new JQ(); - } - if (isArrayLike(selector) && !isNode(selector)) { - return new JQ(selector); - } - return new JQ([selector]); - }; - $.fn = JQ.prototype; - return $; -} -const $ = get$(); - -const $document = $(document); -const $window = $(window); -const $body = $('body'); - -// 避免页面加载完后直接执行css动画 -// https://css-tricks.com/transitions-only-after-page-load/ -setTimeout(() => $body.addClass('mdui-loaded')); -const mdui = { - $: $, -}; - -$.fn.each = function (callback) { - return each(this, callback); -}; - -/** - * 检查 container 元素内是否包含 contains 元素 - * @param container 父元素 - * @param contains 子元素 - * @example -```js -contains( document, document.body ); // true -contains( document.getElementById('test'), document ); // false -contains( $('.container').get(0), $('.contains').get(0) ); // false -``` - */ -function contains(container, contains) { - return container !== contains && toElement(container).contains(contains); -} - -/** - * 把第二个数组的元素追加到第一个数组中,并返回合并后的数组 - * @param first 第一个数组 - * @param second 该数组的元素将被追加到第一个数组中 - * @example -```js -merge( [ 0, 1, 2 ], [ 2, 3, 4 ] ) -// [ 0, 1, 2, 2, 3, 4 ] -``` - */ -function merge(first, second) { - each(second, (_, value) => { - first.push(value); - }); - return first; -} - -$.fn.get = function (index) { - return index === undefined - ? [].slice.call(this) - : this[index >= 0 ? index : index + this.length]; -}; - -$.fn.find = function (selector) { - const foundElements = []; - this.each((_, element) => { - merge(foundElements, $(element.querySelectorAll(selector)).get()); - }); - return new JQ(foundElements); -}; - -// 存储事件 -const handlers = {}; -// 元素ID -let mduiElementId = 1; -/** - * 为元素赋予一个唯一的ID - */ -function getElementId(element) { - const key = '_mduiEventId'; - // @ts-ignore - if (!element[key]) { - // @ts-ignore - element[key] = ++mduiElementId; - } - // @ts-ignore - return element[key]; -} -/** - * 解析事件名中的命名空间 - */ -function parse(type) { - const parts = type.split('.'); - return { - type: parts[0], - ns: parts.slice(1).sort().join(' '), - }; -} -/** - * 命名空间匹配规则 - */ -function matcherFor(ns) { - return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)'); -} -/** - * 获取匹配的事件 - * @param element - * @param type - * @param func - * @param selector - */ -function getHandlers(element, type, func, selector) { - const event = parse(type); - return (handlers[getElementId(element)] || []).filter((handler) => handler && - (!event.type || handler.type === event.type) && - (!event.ns || matcherFor(event.ns).test(handler.ns)) && - (!func || getElementId(handler.func) === getElementId(func)) && - (!selector || handler.selector === selector)); -} -/** - * 添加事件监听 - * @param element - * @param types - * @param func - * @param data - * @param selector - */ -function add(element, types, func, data, selector) { - const elementId = getElementId(element); - if (!handlers[elementId]) { - handlers[elementId] = []; - } - // 传入 data.useCapture 来设置 useCapture: true - let useCapture = false; - if (isObjectLike(data) && data.useCapture) { - useCapture = true; - } - types.split(' ').forEach((type) => { - if (!type) { - return; - } - const event = parse(type); - function callFn(e, elem) { - // 因为鼠标事件模拟事件的 detail 属性是只读的,因此在 e._detail 中存储参数 - const result = func.apply(elem, - // @ts-ignore - e._detail === undefined ? [e] : [e].concat(e._detail)); - if (result === false) { - e.preventDefault(); - e.stopPropagation(); - } - } - function proxyFn(e) { - // @ts-ignore - if (e._ns && !matcherFor(e._ns).test(event.ns)) { - return; - } - // @ts-ignore - e._data = data; - if (selector) { - // 事件代理 - $(element) - .find(selector) - .get() - .reverse() - .forEach((elem) => { - if (elem === e.target || - contains(elem, e.target)) { - callFn(e, elem); - } - }); - } - else { - // 不使用事件代理 - callFn(e, element); - } - } - const handler = { - type: event.type, - ns: event.ns, - func, - selector, - id: handlers[elementId].length, - proxy: proxyFn, - }; - handlers[elementId].push(handler); - element.addEventListener(handler.type, proxyFn, useCapture); - }); -} -/** - * 移除事件监听 - * @param element - * @param types - * @param func - * @param selector - */ -function remove(element, types, func, selector) { - const handlersInElement = handlers[getElementId(element)] || []; - const removeEvent = (handler) => { - delete handlersInElement[handler.id]; - element.removeEventListener(handler.type, handler.proxy, false); - }; - if (!types) { - handlersInElement.forEach((handler) => removeEvent(handler)); - } - else { - types.split(' ').forEach((type) => { - if (type) { - getHandlers(element, type, func, selector).forEach((handler) => removeEvent(handler)); - } - }); - } -} - -$.fn.trigger = function (type, extraParameters) { - const event = parse(type); - let eventObject; - const eventParams = { - bubbles: true, - cancelable: true, - }; - const isMouseEvent = ['click', 'mousedown', 'mouseup', 'mousemove'].indexOf(event.type) > -1; - if (isMouseEvent) { - // Note: MouseEvent 无法传入 detail 参数 - eventObject = new MouseEvent(event.type, eventParams); - } - else { - eventParams.detail = extraParameters; - eventObject = new CustomEvent(event.type, eventParams); - } - // @ts-ignore - eventObject._detail = extraParameters; - // @ts-ignore - eventObject._ns = event.ns; - return this.each(function () { - this.dispatchEvent(eventObject); - }); -}; - -function extend(target, object1, ...objectN) { - objectN.unshift(object1); - each(objectN, (_, object) => { - each(object, (prop, value) => { - if (!isUndefined(value)) { - target[prop] = value; - } - }); - }); - return target; -} - -/** - * 将数组或对象序列化,序列化后的字符串可作为 URL 查询字符串使用 - * - * 若传入数组,则格式必须和 serializeArray 方法的返回值一样 - * @param obj 对象或数组 - * @example -```js -param({ width: 1680, height: 1050 }); -// width=1680&height=1050 -``` - * @example -```js -param({ foo: { one: 1, two: 2 }}) -// foo[one]=1&foo[two]=2 -``` - * @example -```js -param({ids: [1, 2, 3]}) -// ids[]=1&ids[]=2&ids[]=3 -``` - * @example -```js -param([ - {"name":"name","value":"mdui"}, - {"name":"password","value":"123456"} -]) -// name=mdui&password=123456 -``` - */ -function param(obj) { - if (!isObjectLike(obj) && !Array.isArray(obj)) { - return ''; - } - const args = []; - function destructure(key, value) { - let keyTmp; - if (isObjectLike(value)) { - each(value, (i, v) => { - if (Array.isArray(value) && !isObjectLike(v)) { - keyTmp = ''; - } - else { - keyTmp = i; - } - destructure(`${key}[${keyTmp}]`, v); - }); - } - else { - if (value == null || value === '') { - keyTmp = '='; - } - else { - keyTmp = `=${encodeURIComponent(value)}`; - } - args.push(encodeURIComponent(key) + keyTmp); - } - } - if (Array.isArray(obj)) { - each(obj, function () { - destructure(this.name, this.value); - }); - } - else { - each(obj, destructure); - } - return args.join('&'); -} - -// 全局配置参数 -const globalOptions = {}; -// 全局事件名 -const ajaxEvents = { - ajaxStart: 'start.mdui.ajax', - ajaxSuccess: 'success.mdui.ajax', - ajaxError: 'error.mdui.ajax', - ajaxComplete: 'complete.mdui.ajax', -}; - -/** - * 判断此请求方法是否通过查询字符串提交参数 - * @param method 请求方法,大写 - */ -function isQueryStringData(method) { - return ['GET', 'HEAD'].indexOf(method) >= 0; -} -/** - * 添加参数到 URL 上,且 URL 中不存在 ? 时,自动把第一个 & 替换为 ? - * @param url - * @param query - */ -function appendQuery(url, query) { - return `${url}&${query}`.replace(/[&?]{1,2}/, '?'); -} -/** - * 合并请求参数,参数优先级:options > globalOptions > defaults - * @param options - */ -function mergeOptions(options) { - // 默认参数 - const defaults = { - url: '', - method: 'GET', - data: '', - processData: true, - async: true, - cache: true, - username: '', - password: '', - headers: {}, - xhrFields: {}, - statusCode: {}, - dataType: 'text', - contentType: 'application/x-www-form-urlencoded', - timeout: 0, - global: true, - }; - // globalOptions 中的回调函数不合并 - each(globalOptions, (key, value) => { - const callbacks = [ - 'beforeSend', - 'success', - 'error', - 'complete', - 'statusCode', - ]; - // @ts-ignore - if (callbacks.indexOf(key) < 0 && !isUndefined(value)) { - defaults[key] = value; - } - }); - return extend({}, defaults, options); -} -/** - * 发送 ajax 请求 - * @param options - * @example -```js -ajax({ - method: "POST", - url: "some.php", - data: { name: "John", location: "Boston" } -}).then(function( msg ) { - alert( "Data Saved: " + msg ); -}); -``` - */ -function ajax(options) { - // 是否已取消请求 - let isCanceled = false; - // 事件参数 - const eventParams = {}; - // 参数合并 - const mergedOptions = mergeOptions(options); - let url = mergedOptions.url || window.location.toString(); - const method = mergedOptions.method.toUpperCase(); - let data = mergedOptions.data; - const processData = mergedOptions.processData; - const async = mergedOptions.async; - const cache = mergedOptions.cache; - const username = mergedOptions.username; - const password = mergedOptions.password; - const headers = mergedOptions.headers; - const xhrFields = mergedOptions.xhrFields; - const statusCode = mergedOptions.statusCode; - const dataType = mergedOptions.dataType; - const contentType = mergedOptions.contentType; - const timeout = mergedOptions.timeout; - const global = mergedOptions.global; - // 需要发送的数据 - // GET/HEAD 请求和 processData 为 true 时,转换为查询字符串格式,特殊格式不转换 - if (data && - (isQueryStringData(method) || processData) && - !isString(data) && - !(data instanceof ArrayBuffer) && - !(data instanceof Blob) && - !(data instanceof Document) && - !(data instanceof FormData)) { - data = param(data); - } - // 对于 GET、HEAD 类型的请求,把 data 数据添加到 URL 中 - if (data && isQueryStringData(method)) { - // 查询字符串拼接到 URL 中 - url = appendQuery(url, data); - data = null; - } - /** - * 触发事件和回调函数 - * @param event - * @param params - * @param callback - * @param args - */ - function trigger(event, params, callback, ...args) { - // 触发全局事件 - if (global) { - $(document).trigger(event, params); - } - // 触发 ajax 回调和事件 - let result1; - let result2; - if (callback) { - // 全局回调 - if (callback in globalOptions) { - // @ts-ignore - result1 = globalOptions[callback](...args); - } - // 自定义回调 - if (mergedOptions[callback]) { - // @ts-ignore - result2 = mergedOptions[callback](...args); - } - // beforeSend 回调返回 false 时取消 ajax 请求 - if (callback === 'beforeSend' && - (result1 === false || result2 === false)) { - isCanceled = true; - } - } - } - // XMLHttpRequest 请求 - function XHR() { - let textStatus; - return new Promise((resolve, reject) => { - // GET/HEAD 请求的缓存处理 - if (isQueryStringData(method) && !cache) { - url = appendQuery(url, `_=${Date.now()}`); - } - // 创建 XHR - const xhr = new XMLHttpRequest(); - xhr.open(method, url, async, username, password); - if (contentType || - (data && !isQueryStringData(method) && contentType !== false)) { - xhr.setRequestHeader('Content-Type', contentType); - } - // 设置 Accept - if (dataType === 'json') { - xhr.setRequestHeader('Accept', 'application/json, text/javascript'); - } - // 添加 headers - if (headers) { - each(headers, (key, value) => { - // undefined 值不发送,string 和 null 需要发送 - if (!isUndefined(value)) { - xhr.setRequestHeader(key, value + ''); // 把 null 转换成字符串 - } - }); - } - // 检查是否是跨域请求,跨域请求时不添加 X-Requested-With - const crossDomain = /^([\w-]+:)?\/\/([^/]+)/.test(url) && - RegExp.$2 !== window.location.host; - if (!crossDomain) { - xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - } - if (xhrFields) { - each(xhrFields, (key, value) => { - // @ts-ignore - xhr[key] = value; - }); - } - eventParams.xhr = xhr; - eventParams.options = mergedOptions; - let xhrTimeout; - xhr.onload = function () { - if (xhrTimeout) { - clearTimeout(xhrTimeout); - } - // AJAX 返回的 HTTP 响应码是否表示成功 - const isHttpStatusSuccess = (xhr.status >= 200 && xhr.status < 300) || - xhr.status === 304 || - xhr.status === 0; - let responseData; - if (isHttpStatusSuccess) { - if (xhr.status === 204 || method === 'HEAD') { - textStatus = 'nocontent'; - } - else if (xhr.status === 304) { - textStatus = 'notmodified'; - } - else { - textStatus = 'success'; - } - if (dataType === 'json') { - try { - responseData = - method === 'HEAD' ? undefined : JSON.parse(xhr.responseText); - eventParams.data = responseData; - } - catch (err) { - textStatus = 'parsererror'; - trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, textStatus); - reject(new Error(textStatus)); - } - if (textStatus !== 'parsererror') { - trigger(ajaxEvents.ajaxSuccess, eventParams, 'success', responseData, textStatus, xhr); - resolve(responseData); - } - } - else { - responseData = - method === 'HEAD' - ? undefined - : xhr.responseType === 'text' || xhr.responseType === '' - ? xhr.responseText - : xhr.response; - eventParams.data = responseData; - trigger(ajaxEvents.ajaxSuccess, eventParams, 'success', responseData, textStatus, xhr); - resolve(responseData); - } - } - else { - textStatus = 'error'; - trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, textStatus); - reject(new Error(textStatus)); - } - // statusCode - each([globalOptions.statusCode, statusCode], (_, func) => { - if (func && func[xhr.status]) { - if (isHttpStatusSuccess) { - func[xhr.status](responseData, textStatus, xhr); - } - else { - func[xhr.status](xhr, textStatus); - } - } - }); - trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, textStatus); - }; - xhr.onerror = function () { - if (xhrTimeout) { - clearTimeout(xhrTimeout); - } - trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, xhr.statusText); - trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, 'error'); - reject(new Error(xhr.statusText)); - }; - xhr.onabort = function () { - let statusText = 'abort'; - if (xhrTimeout) { - statusText = 'timeout'; - clearTimeout(xhrTimeout); - } - trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, statusText); - trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, statusText); - reject(new Error(statusText)); - }; - // ajax start 回调 - trigger(ajaxEvents.ajaxStart, eventParams, 'beforeSend', xhr); - if (isCanceled) { - reject(new Error('cancel')); - return; - } - // Timeout - if (timeout > 0) { - xhrTimeout = setTimeout(() => { - xhr.abort(); - }, timeout); - } - // 发送 XHR - xhr.send(data); - }); - } - return XHR(); -} - -$.ajax = ajax; - -/** - * 为 Ajax 请求设置全局配置参数 - * @param options 键值对参数 - * @example -```js -ajaxSetup({ - dataType: 'json', - method: 'POST', -}); -``` - */ -function ajaxSetup(options) { - return extend(globalOptions, options); -} - -$.ajaxSetup = ajaxSetup; - -$.contains = contains; - -const dataNS = '_mduiElementDataStorage'; - -/** - * 在元素上设置键值对数据 - * @param element - * @param object - */ -function setObjectToElement(element, object) { - // @ts-ignore - if (!element[dataNS]) { - // @ts-ignore - element[dataNS] = {}; - } - each(object, (key, value) => { - // @ts-ignore - element[dataNS][toCamelCase(key)] = value; - }); -} -function data(element, key, value) { - // 根据键值对设置值 - // data(element, { 'key' : 'value' }) - if (isObjectLike(key)) { - setObjectToElement(element, key); - return key; - } - // 根据 key、value 设置值 - // data(element, 'key', 'value') - if (!isUndefined(value)) { - setObjectToElement(element, { [key]: value }); - return value; - } - // 获取所有值 - // data(element) - if (isUndefined(key)) { - // @ts-ignore - return element[dataNS] ? element[dataNS] : {}; - } - // 从 dataNS 中获取指定值 - // data(element, 'key') - key = toCamelCase(key); - // @ts-ignore - if (element[dataNS] && key in element[dataNS]) { - // @ts-ignore - return element[dataNS][key]; - } - return undefined; -} - -$.data = data; - -$.each = each; - -$.extend = function (...objectN) { - if (objectN.length === 1) { - each(objectN[0], (prop, value) => { - this[prop] = value; - }); - return this; - } - return extend(objectN.shift(), objectN.shift(), ...objectN); -}; - -function map(elements, callback) { - let value; - const ret = []; - each(elements, (i, element) => { - value = callback.call(window, element, i); - if (value != null) { - ret.push(value); - } - }); - return [].concat(...ret); -} - -$.map = map; - -$.merge = merge; - -$.param = param; - -/** - * 移除指定元素上存放的数据 - * @param element 存放数据的元素 - * @param name - * 数据键名 - * - * 若未指定键名,将移除元素上所有数据 - * - * 多个键名可以用空格分隔,或者用数组表示多个键名 - @example -```js -// 移除元素上键名为 name 的数据 -removeData(document.body, 'name'); -``` - * @example -```js -// 移除元素上键名为 name1 和 name2 的数据 -removeData(document.body, 'name1 name2'); -``` - * @example -```js -// 移除元素上键名为 name1 和 name2 的数据 -removeData(document.body, ['name1', 'name2']); -``` - * @example -```js -// 移除元素上所有数据 -removeData(document.body); -``` - */ -function removeData(element, name) { - // @ts-ignore - if (!element[dataNS]) { - return; - } - const remove = (nameItem) => { - nameItem = toCamelCase(nameItem); - // @ts-ignore - if (element[dataNS][nameItem]) { - // @ts-ignore - element[dataNS][nameItem] = null; - // @ts-ignore - delete element[dataNS][nameItem]; - } - }; - if (isUndefined(name)) { - // @ts-ignore - element[dataNS] = null; - // @ts-ignore - delete element[dataNS]; - // @ts-ignore - } - else if (isString(name)) { - name - .split(' ') - .filter((nameItem) => nameItem) - .forEach((nameItem) => remove(nameItem)); - } - else { - each(name, (_, nameItem) => remove(nameItem)); - } -} - -$.removeData = removeData; - -/** - * 过滤掉数组中的重复元素 - * @param arr 数组 - * @example -```js -unique([1, 2, 12, 3, 2, 1, 2, 1, 1]); -// [1, 2, 12, 3] -``` - */ -function unique(arr) { - const result = []; - each(arr, (_, val) => { - if (result.indexOf(val) === -1) { - result.push(val); - } - }); - return result; -} - -$.unique = unique; - -$.fn.add = function (selector) { - return new JQ(unique(merge(this.get(), $(selector).get()))); -}; - -each(['add', 'remove', 'toggle'], (_, name) => { - $.fn[`${name}Class`] = function (className) { - if (name === 'remove' && !arguments.length) { - return this.each((_, element) => { - element.setAttribute('class', ''); - }); - } - return this.each((i, element) => { - if (!isElement(element)) { - return; - } - const classes = (isFunction(className) - ? className.call(element, i, element.getAttribute('class') || '') - : className) - .split(' ') - .filter((name) => name); - each(classes, (_, cls) => { - element.classList[name](cls); - }); - }); - }; -}); - -each(['insertBefore', 'insertAfter'], (nameIndex, name) => { - $.fn[name] = function (target) { - const $element = nameIndex ? $(this.get().reverse()) : this; // 顺序和 jQuery 保持一致 - const $target = $(target); - const result = []; - $target.each((index, target) => { - if (!target.parentNode) { - return; - } - $element.each((_, element) => { - const newItem = index - ? element.cloneNode(true) - : element; - const existingItem = nameIndex ? target.nextSibling : target; - result.push(newItem); - target.parentNode.insertBefore(newItem, existingItem); - }); - }); - return $(nameIndex ? result.reverse() : result); - }; -}); - -/** - * 是否不是 HTML 字符串(包裹在 <> 中) - * @param target - */ -function isPlainText(target) { - return (isString(target) && (target[0] !== '<' || target[target.length - 1] !== '>')); -} -each(['before', 'after'], (nameIndex, name) => { - $.fn[name] = function (...args) { - // after 方法,多个参数需要按参数顺序添加到元素后面,所以需要将参数顺序反向处理 - if (nameIndex === 1) { - args = args.reverse(); - } - return this.each((index, element) => { - const targets = isFunction(args[0]) - ? [args[0].call(element, index, element.innerHTML)] - : args; - each(targets, (_, target) => { - let $target; - if (isPlainText(target)) { - $target = $(getChildNodesArray(target, 'div')); - } - else if (index && isElement(target)) { - $target = $(target.cloneNode(true)); - } - else { - $target = $(target); - } - $target[nameIndex ? 'insertAfter' : 'insertBefore'](element); - }); - }); - }; -}); - -$.fn.off = function (types, selector, callback) { - // types 是对象 - if (isObjectLike(types)) { - each(types, (type, fn) => { - // this.off('click', undefined, function () {}) - // this.off('click', '.box', function () {}) - this.off(type, selector, fn); - }); - return this; - } - // selector 不存在 - if (selector === false || isFunction(selector)) { - callback = selector; - selector = undefined; - // this.off('click', undefined, function () {}) - } - // callback 传入 `false`,相当于 `return false` - if (callback === false) { - callback = returnFalse; - } - return this.each(function () { - remove(this, types, callback, selector); - }); -}; - -$.fn.on = function (types, selector, data, callback, one) { - // types 可以是 type/func 对象 - if (isObjectLike(types)) { - // (types-Object, selector, data) - if (!isString(selector)) { - // (types-Object, data) - data = data || selector; - selector = undefined; - } - each(types, (type, fn) => { - // selector 和 data 都可能是 undefined - // @ts-ignore - this.on(type, selector, data, fn, one); - }); - return this; - } - if (data == null && callback == null) { - // (types, fn) - callback = selector; - data = selector = undefined; - } - else if (callback == null) { - if (isString(selector)) { - // (types, selector, fn) - callback = data; - data = undefined; - } - else { - // (types, data, fn) - callback = data; - data = selector; - selector = undefined; - } - } - if (callback === false) { - callback = returnFalse; - } - else if (!callback) { - return this; - } - // $().one() - if (one) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - const origCallback = callback; - callback = function (event) { - _this.off(event.type, selector, callback); - // eslint-disable-next-line prefer-rest-params - return origCallback.apply(this, arguments); - }; - } - return this.each(function () { - add(this, types, callback, data, selector); - }); -}; - -each(ajaxEvents, (name, eventName) => { - $.fn[name] = function (fn) { - return this.on(eventName, (e, params) => { - fn(e, params.xhr, params.options, params.data); - }); - }; -}); - -$.fn.map = function (callback) { - return new JQ(map(this, (element, i) => callback.call(element, i, element))); -}; - -$.fn.clone = function () { - return this.map(function () { - return this.cloneNode(true); - }); -}; - -$.fn.is = function (selector) { - let isMatched = false; - if (isFunction(selector)) { - this.each((index, element) => { - if (selector.call(element, index, element)) { - isMatched = true; - } - }); - return isMatched; - } - if (isString(selector)) { - this.each((_, element) => { - if (isDocument(element) || isWindow(element)) { - return; - } - // @ts-ignore - const matches = element.matches || element.msMatchesSelector; - if (matches.call(element, selector)) { - isMatched = true; - } - }); - return isMatched; - } - const $compareWith = $(selector); - this.each((_, element) => { - $compareWith.each((_, compare) => { - if (element === compare) { - isMatched = true; - } - }); - }); - return isMatched; -}; - -$.fn.remove = function (selector) { - return this.each((_, element) => { - if (element.parentNode && (!selector || $(element).is(selector))) { - element.parentNode.removeChild(element); - } - }); -}; - -each(['prepend', 'append'], (nameIndex, name) => { - $.fn[name] = function (...args) { - return this.each((index, element) => { - const childNodes = element.childNodes; - const childLength = childNodes.length; - const child = childLength - ? childNodes[nameIndex ? childLength - 1 : 0] - : document.createElement('div'); - if (!childLength) { - element.appendChild(child); - } - let contents = isFunction(args[0]) - ? [args[0].call(element, index, element.innerHTML)] - : args; - // 如果不是字符串,则仅第一个元素使用原始元素,其他的都克隆自第一个元素 - if (index) { - contents = contents.map((content) => { - return isString(content) ? content : $(content).clone(); - }); - } - $(child)[nameIndex ? 'after' : 'before'](...contents); - if (!childLength) { - element.removeChild(child); - } - }); - }; -}); - -each(['appendTo', 'prependTo'], (nameIndex, name) => { - $.fn[name] = function (target) { - const extraChilds = []; - const $target = $(target).map((_, element) => { - const childNodes = element.childNodes; - const childLength = childNodes.length; - if (childLength) { - return childNodes[nameIndex ? 0 : childLength - 1]; - } - const child = document.createElement('div'); - element.appendChild(child); - extraChilds.push(child); - return child; - }); - const $result = this[nameIndex ? 'insertBefore' : 'insertAfter']($target); - $(extraChilds).remove(); - return $result; - }; -}); - -each(['attr', 'prop', 'css'], (nameIndex, name) => { - function set(element, key, value) { - // 值为 undefined 时,不修改 - if (isUndefined(value)) { - return; - } - switch (nameIndex) { - // attr - case 0: - if (isNull(value)) { - element.removeAttribute(key); - } - else { - element.setAttribute(key, value); - } - break; - // prop - case 1: - // @ts-ignore - element[key] = value; - break; - // css - default: - key = toCamelCase(key); - // @ts-ignore - element.style[key] = isNumber(value) - ? `${value}${cssNumber.indexOf(key) > -1 ? '' : 'px'}` - : value; - break; - } - } - function get(element, key) { - switch (nameIndex) { - // attr - case 0: - // 属性不存在时,原生 getAttribute 方法返回 null,而 jquery 返回 undefined。这里和 jquery 保持一致 - const value = element.getAttribute(key); - return isNull(value) ? undefined : value; - // prop - case 1: - // @ts-ignore - return element[key]; - // css - default: - return getStyle(element, key); - } - } - $.fn[name] = function (key, value) { - if (isObjectLike(key)) { - each(key, (k, v) => { - // @ts-ignore - this[name](k, v); - }); - return this; - } - if (arguments.length === 1) { - const element = this[0]; - return isElement(element) ? get(element, key) : undefined; - } - return this.each((i, element) => { - set(element, key, isFunction(value) ? value.call(element, i, get(element, key)) : value); - }); - }; -}); - -$.fn.children = function (selector) { - const children = []; - this.each((_, element) => { - each(element.childNodes, (__, childNode) => { - if (!isElement(childNode)) { - return; - } - if (!selector || $(childNode).is(selector)) { - children.push(childNode); - } - }); - }); - return new JQ(unique(children)); -}; - -$.fn.slice = function (...args) { - return new JQ([].slice.apply(this, args)); -}; - -$.fn.eq = function (index) { - const ret = index === -1 ? this.slice(index) : this.slice(index, +index + 1); - return new JQ(ret); -}; - -function dir($elements, nameIndex, node, selector, filter) { - const ret = []; - let target; - $elements.each((_, element) => { - target = element[node]; - // 不能包含最顶层的 document 元素 - while (target && isElement(target)) { - // prevUntil, nextUntil, parentsUntil - if (nameIndex === 2) { - if (selector && $(target).is(selector)) { - break; - } - if (!filter || $(target).is(filter)) { - ret.push(target); - } - } - // prev, next, parent - else if (nameIndex === 0) { - if (!selector || $(target).is(selector)) { - ret.push(target); - } - break; - } - // prevAll, nextAll, parents - else { - if (!selector || $(target).is(selector)) { - ret.push(target); - } - } - // @ts-ignore - target = target[node]; - } - }); - return new JQ(unique(ret)); -} - -each(['', 's', 'sUntil'], (nameIndex, name) => { - $.fn[`parent${name}`] = function (selector, filter) { - // parents、parentsUntil 需要把元素的顺序反向处理,以便和 jQuery 的结果一致 - const $nodes = !nameIndex ? this : $(this.get().reverse()); - return dir($nodes, nameIndex, 'parentNode', selector, filter); - }; -}); - -$.fn.closest = function (selector) { - if (this.is(selector)) { - return this; - } - const matched = []; - this.parents().each((_, element) => { - if ($(element).is(selector)) { - matched.push(element); - return false; - } - }); - return new JQ(matched); -}; - -const rbrace = /^(?:{[\w\W]*\}|\[[\w\W]*\])$/; -// 从 `data-*` 中获取的值,需要经过该函数转换 -function getData(value) { - if (value === 'true') { - return true; - } - if (value === 'false') { - return false; - } - if (value === 'null') { - return null; - } - if (value === +value + '') { - return +value; - } - if (rbrace.test(value)) { - return JSON.parse(value); - } - return value; -} -// 若 value 不存在,则从 `data-*` 中获取值 -function dataAttr(element, key, value) { - if (isUndefined(value) && element.nodeType === 1) { - const name = 'data-' + toKebabCase(key); - value = element.getAttribute(name); - if (isString(value)) { - try { - value = getData(value); - } - catch (e) { } - } - else { - value = undefined; - } - } - return value; -} -$.fn.data = function (key, value) { - // 获取所有值 - if (isUndefined(key)) { - if (!this.length) { - return undefined; - } - const element = this[0]; - const resultData = data(element); - // window, document 上不存在 `data-*` 属性 - if (element.nodeType !== 1) { - return resultData; - } - // 从 `data-*` 中获取值 - const attrs = element.attributes; - let i = attrs.length; - while (i--) { - if (attrs[i]) { - let name = attrs[i].name; - if (name.indexOf('data-') === 0) { - name = toCamelCase(name.slice(5)); - resultData[name] = dataAttr(element, name, resultData[name]); - } - } - } - return resultData; - } - // 同时设置多个值 - if (isObjectLike(key)) { - return this.each(function () { - data(this, key); - }); - } - // value 传入了 undefined - if (arguments.length === 2 && isUndefined(value)) { - return this; - } - // 设置值 - if (!isUndefined(value)) { - return this.each(function () { - data(this, key, value); - }); - } - // 获取值 - if (!this.length) { - return undefined; - } - return dataAttr(this[0], key, data(this[0], key)); -}; - -$.fn.empty = function () { - return this.each(function () { - this.innerHTML = ''; - }); -}; - -$.fn.extend = function (obj) { - each(obj, (prop, value) => { - // 在 JQ 对象上扩展方法时,需要自己添加 typescript 的类型定义 - $.fn[prop] = value; - }); - return this; -}; - -$.fn.filter = function (selector) { - if (isFunction(selector)) { - return this.map((index, element) => selector.call(element, index, element) ? element : undefined); - } - if (isString(selector)) { - return this.map((_, element) => $(element).is(selector) ? element : undefined); - } - const $selector = $(selector); - return this.map((_, element) => $selector.get().indexOf(element) > -1 ? element : undefined); -}; - -$.fn.first = function () { - return this.eq(0); -}; - -$.fn.has = function (selector) { - const $targets = isString(selector) ? this.find(selector) : $(selector); - const { length } = $targets; - return this.map(function () { - for (let i = 0; i < length; i += 1) { - if (contains(this, $targets[i])) { - return this; - } - } - return; - }); -}; - -$.fn.hasClass = function (className) { - return this[0].classList.contains(className); -}; - -/** - * 值上面的 padding、border、margin 处理 - * @param element - * @param name - * @param value - * @param funcIndex - * @param includeMargin - * @param multiply - */ -function handleExtraWidth(element, name, value, funcIndex, includeMargin, multiply) { - // 获取元素的 padding, border, margin 宽度(两侧宽度的和) - const getExtraWidthValue = (extra) => { - return (getExtraWidth(element, name.toLowerCase(), extra) * - multiply); - }; - if (funcIndex === 2 && includeMargin) { - value += getExtraWidthValue('margin'); - } - if (isBorderBox(element)) { - // IE 为 box-sizing: border-box 时,得到的值不含 border 和 padding,这里先修复 - // 仅获取时需要处理,multiply === 1 为 get - if (isIE() && multiply === 1) { - value += getExtraWidthValue('border'); - value += getExtraWidthValue('padding'); - } - if (funcIndex === 0) { - value -= getExtraWidthValue('border'); - } - if (funcIndex === 1) { - value -= getExtraWidthValue('border'); - value -= getExtraWidthValue('padding'); - } - } - else { - if (funcIndex === 0) { - value += getExtraWidthValue('padding'); - } - if (funcIndex === 2) { - value += getExtraWidthValue('border'); - value += getExtraWidthValue('padding'); - } - } - return value; -} -/** - * 获取元素的样式值 - * @param element - * @param name - * @param funcIndex 0: innerWidth, innerHeight; 1: width, height; 2: outerWidth, outerHeight - * @param includeMargin - */ -function get(element, name, funcIndex, includeMargin) { - const clientProp = `client${name}`; - const scrollProp = `scroll${name}`; - const offsetProp = `offset${name}`; - const innerProp = `inner${name}`; - // $(window).width() - if (isWindow(element)) { - // outerWidth, outerHeight 需要包含滚动条的宽度 - return funcIndex === 2 - ? element[innerProp] - : toElement(document)[clientProp]; - } - // $(document).width() - if (isDocument(element)) { - const doc = toElement(element); - return Math.max( - // @ts-ignore - element.body[scrollProp], doc[scrollProp], - // @ts-ignore - element.body[offsetProp], doc[offsetProp], doc[clientProp]); - } - const value = parseFloat(getComputedStyleValue(element, name.toLowerCase()) || '0'); - return handleExtraWidth(element, name, value, funcIndex, includeMargin, 1); -} -/** - * 设置元素的样式值 - * @param element - * @param elementIndex - * @param name - * @param funcIndex 0: innerWidth, innerHeight; 1: width, height; 2: outerWidth, outerHeight - * @param includeMargin - * @param value - */ -function set(element, elementIndex, name, funcIndex, includeMargin, value) { - let computedValue = isFunction(value) - ? value.call(element, elementIndex, get(element, name, funcIndex, includeMargin)) - : value; - if (computedValue == null) { - return; - } - const $element = $(element); - const dimension = name.toLowerCase(); - // 特殊的值,不需要计算 padding、border、margin - if (['auto', 'inherit', ''].indexOf(computedValue) > -1) { - $element.css(dimension, computedValue); - return; - } - // 其他值保留原始单位。注意:如果不使用 px 作为单位,则算出的值一般是不准确的 - const suffix = computedValue.toString().replace(/\b[0-9.]*/, ''); - const numerical = parseFloat(computedValue); - computedValue = - handleExtraWidth(element, name, numerical, funcIndex, includeMargin, -1) + - (suffix || 'px'); - $element.css(dimension, computedValue); -} -each(['Width', 'Height'], (_, name) => { - each([`inner${name}`, name.toLowerCase(), `outer${name}`], (funcIndex, funcName) => { - $.fn[funcName] = function (margin, value) { - // 是否是赋值操作 - const isSet = arguments.length && (funcIndex < 2 || !isBoolean(margin)); - const includeMargin = margin === true || value === true; - // 获取第一个元素的值 - if (!isSet) { - return this.length - ? get(this[0], name, funcIndex, includeMargin) - : undefined; - } - // 设置每个元素的值 - return this.each((index, element) => set(element, index, name, funcIndex, includeMargin, margin)); - }; - }); -}); - -$.fn.hide = function () { - return this.each(function () { - this.style.display = 'none'; - }); -}; - -each(['val', 'html', 'text'], (nameIndex, name) => { - const props = { - 0: 'value', - 1: 'innerHTML', - 2: 'textContent', - }; - const propName = props[nameIndex]; - function get($elements) { - // text() 获取所有元素的文本 - if (nameIndex === 2) { - // @ts-ignore - return map($elements, (element) => toElement(element)[propName]).join(''); - } - // 空集合时,val() 和 html() 返回 undefined - if (!$elements.length) { - return undefined; - } - // val() 和 html() 仅获取第一个元素的内容 - const firstElement = $elements[0]; - // select multiple 返回数组 - if (nameIndex === 0 && $(firstElement).is('select[multiple]')) { - return map($(firstElement).find('option:checked'), (element) => element.value); - } - // @ts-ignore - return firstElement[propName]; - } - function set(element, value) { - // text() 和 html() 赋值为 undefined,则保持原内容不变 - // val() 赋值为 undefined 则赋值为空 - if (isUndefined(value)) { - if (nameIndex !== 0) { - return; - } - value = ''; - } - if (nameIndex === 1 && isElement(value)) { - value = value.outerHTML; - } - // @ts-ignore - element[propName] = value; - } - $.fn[name] = function (value) { - // 获取值 - if (!arguments.length) { - return get(this); - } - // 设置值 - return this.each((i, element) => { - const computedValue = isFunction(value) - ? value.call(element, i, get($(element))) - : value; - // value 是数组,则选中数组中的元素,反选不在数组中的元素 - if (nameIndex === 0 && Array.isArray(computedValue)) { - // select[multiple] - if ($(element).is('select[multiple]')) { - map($(element).find('option'), (option) => (option.selected = - computedValue.indexOf(option.value) > - -1)); - } - // 其他 checkbox, radio 等元素 - else { - element.checked = - computedValue.indexOf(element.value) > -1; - } - } - else { - set(element, computedValue); - } - }); - }; -}); - -$.fn.index = function (selector) { - if (!arguments.length) { - return this.eq(0).parent().children().get().indexOf(this[0]); - } - if (isString(selector)) { - return $(selector).get().indexOf(this[0]); - } - return this.get().indexOf($(selector)[0]); -}; - -$.fn.last = function () { - return this.eq(-1); -}; - -each(['', 'All', 'Until'], (nameIndex, name) => { - $.fn[`next${name}`] = function (selector, filter) { - return dir(this, nameIndex, 'nextElementSibling', selector, filter); - }; -}); - -$.fn.not = function (selector) { - const $excludes = this.filter(selector); - return this.map((_, element) => $excludes.index(element) > -1 ? undefined : element); -}; - -/** - * 返回最近的用于定位的父元素 - */ -$.fn.offsetParent = function () { - return this.map(function () { - let offsetParent = this.offsetParent; - while (offsetParent && $(offsetParent).css('position') === 'static') { - offsetParent = offsetParent.offsetParent; - } - return offsetParent || document.documentElement; - }); -}; - -function floatStyle($element, name) { - return parseFloat($element.css(name)); -} -$.fn.position = function () { - if (!this.length) { - return undefined; - } - const $element = this.eq(0); - let currentOffset; - let parentOffset = { - left: 0, - top: 0, - }; - if ($element.css('position') === 'fixed') { - currentOffset = $element[0].getBoundingClientRect(); - } - else { - currentOffset = $element.offset(); - const $offsetParent = $element.offsetParent(); - parentOffset = $offsetParent.offset(); - parentOffset.top += floatStyle($offsetParent, 'border-top-width'); - parentOffset.left += floatStyle($offsetParent, 'border-left-width'); - } - return { - top: currentOffset.top - parentOffset.top - floatStyle($element, 'margin-top'), - left: currentOffset.left - - parentOffset.left - - floatStyle($element, 'margin-left'), - }; -}; - -function get$1(element) { - if (!element.getClientRects().length) { - return { top: 0, left: 0 }; - } - const rect = element.getBoundingClientRect(); - const win = element.ownerDocument.defaultView; - return { - top: rect.top + win.pageYOffset, - left: rect.left + win.pageXOffset, - }; -} -function set$1(element, value, index) { - const $element = $(element); - const position = $element.css('position'); - if (position === 'static') { - $element.css('position', 'relative'); - } - const currentOffset = get$1(element); - const currentTopString = $element.css('top'); - const currentLeftString = $element.css('left'); - let currentTop; - let currentLeft; - const calculatePosition = (position === 'absolute' || position === 'fixed') && - (currentTopString + currentLeftString).indexOf('auto') > -1; - if (calculatePosition) { - const currentPosition = $element.position(); - currentTop = currentPosition.top; - currentLeft = currentPosition.left; - } - else { - currentTop = parseFloat(currentTopString); - currentLeft = parseFloat(currentLeftString); - } - const computedValue = isFunction(value) - ? value.call(element, index, extend({}, currentOffset)) - : value; - $element.css({ - top: computedValue.top != null - ? computedValue.top - currentOffset.top + currentTop - : undefined, - left: computedValue.left != null - ? computedValue.left - currentOffset.left + currentLeft - : undefined, - }); -} -$.fn.offset = function (value) { - // 获取坐标 - if (!arguments.length) { - if (!this.length) { - return undefined; - } - return get$1(this[0]); - } - // 设置坐标 - return this.each(function (index) { - set$1(this, value, index); - }); -}; - -$.fn.one = function (types, selector, data, callback) { - // @ts-ignore - return this.on(types, selector, data, callback, true); -}; - -each(['', 'All', 'Until'], (nameIndex, name) => { - $.fn[`prev${name}`] = function (selector, filter) { - // prevAll、prevUntil 需要把元素的顺序倒序处理,以便和 jQuery 的结果一致 - const $nodes = !nameIndex ? this : $(this.get().reverse()); - return dir($nodes, nameIndex, 'previousElementSibling', selector, filter); - }; -}); - -$.fn.removeAttr = function (attributeName) { - const names = attributeName.split(' ').filter((name) => name); - return this.each(function () { - each(names, (_, name) => { - this.removeAttribute(name); - }); - }); -}; - -$.fn.removeData = function (name) { - return this.each(function () { - removeData(this, name); - }); -}; - -$.fn.removeProp = function (name) { - return this.each(function () { - try { - // @ts-ignore - delete this[name]; - } - catch (e) { } - }); -}; - -$.fn.replaceWith = function (newContent) { - this.each((index, element) => { - let content = newContent; - if (isFunction(content)) { - content = content.call(element, index, element.innerHTML); - } - else if (index && !isString(content)) { - content = $(content).clone(); - } - $(element).before(content); - }); - return this.remove(); -}; - -$.fn.replaceAll = function (target) { - return $(target).map((index, element) => { - $(element).replaceWith(index ? this.clone() : this); - return this.get(); - }); -}; - -/** - * 将表单元素的值组合成键值对数组 - * @returns {Array} - */ -$.fn.serializeArray = function () { - const result = []; - this.each((_, element) => { - const elements = element instanceof HTMLFormElement ? element.elements : [element]; - $(elements).each((_, element) => { - const $element = $(element); - const type = element.type; - const nodeName = element.nodeName.toLowerCase(); - if (nodeName !== 'fieldset' && - element.name && - !element.disabled && - ['input', 'select', 'textarea', 'keygen'].indexOf(nodeName) > -1 && - ['submit', 'button', 'image', 'reset', 'file'].indexOf(type) === -1 && - (['radio', 'checkbox'].indexOf(type) === -1 || - element.checked)) { - const value = $element.val(); - const valueArr = Array.isArray(value) ? value : [value]; - valueArr.forEach((value) => { - result.push({ - name: element.name, - value, - }); - }); - } - }); - }); - return result; -}; - -$.fn.serialize = function () { - return param(this.serializeArray()); -}; - -const elementDisplay = {}; -/** - * 获取元素的初始 display 值,用于 .show() 方法 - * @param nodeName - */ -function defaultDisplay(nodeName) { - let element; - let display; - if (!elementDisplay[nodeName]) { - element = document.createElement(nodeName); - document.body.appendChild(element); - display = getStyle(element, 'display'); - element.parentNode.removeChild(element); - if (display === 'none') { - display = 'block'; - } - elementDisplay[nodeName] = display; - } - return elementDisplay[nodeName]; -} -/** - * 显示指定元素 - * @returns {JQ} - */ -$.fn.show = function () { - return this.each(function () { - if (this.style.display === 'none') { - this.style.display = ''; - } - if (getStyle(this, 'display') === 'none') { - this.style.display = defaultDisplay(this.nodeName); - } - }); -}; - -/** - * 取得同辈元素的集合 - * @param selector {String=} - * @returns {JQ} - */ -$.fn.siblings = function (selector) { - return this.prevAll(selector).add(this.nextAll(selector)); -}; - -/** - * 切换元素的显示状态 - */ -$.fn.toggle = function () { - return this.each(function () { - getStyle(this, 'display') === 'none' ? $(this).show() : $(this).hide(); - }); -}; - -$.fn.reflow = function () { - return this.each(function () { - return this.clientLeft; - }); -}; - -$.fn.transition = function (duration) { - if (isNumber(duration)) { - duration = `${duration}ms`; - } - return this.each(function () { - this.style.webkitTransitionDuration = duration; - this.style.transitionDuration = duration; - }); -}; - -$.fn.transitionEnd = function (callback) { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - const events = ['webkitTransitionEnd', 'transitionend']; - function fireCallback(e) { - if (e.target !== this) { - return; - } - // @ts-ignore - callback.call(this, e); - each(events, (_, event) => { - that.off(event, fireCallback); - }); - } - each(events, (_, event) => { - that.on(event, fireCallback); - }); - return this; -}; - -$.fn.transformOrigin = function (transformOrigin) { - return this.each(function () { - this.style.webkitTransformOrigin = transformOrigin; - this.style.transformOrigin = transformOrigin; - }); -}; - -$.fn.transform = function (transform) { - return this.each(function () { - this.style.webkitTransform = transform; - this.style.transform = transform; - }); -}; - -/** - * CSS 选择器和初始化函数组成的对象 - */ -const entries = {}; -/** - * 注册并执行初始化函数 - * @param selector CSS 选择器 - * @param apiInit 初始化函数 - * @param i 元素索引 - * @param element 元素 - */ -function mutation(selector, apiInit, i, element) { - let selectors = data(element, '_mdui_mutation'); - if (!selectors) { - selectors = []; - data(element, '_mdui_mutation', selectors); - } - if (selectors.indexOf(selector) === -1) { - selectors.push(selector); - apiInit.call(element, i, element); - } -} - -$.fn.mutation = function () { - return this.each((i, element) => { - const $this = $(element); - each(entries, (selector, apiInit) => { - if ($this.is(selector)) { - mutation(selector, apiInit, i, element); - } - $this.find(selector).each((i, element) => { - mutation(selector, apiInit, i, element); - }); - }); - }); -}; - -$.showOverlay = function (zIndex) { - let $overlay = $('.mdui-overlay'); - if ($overlay.length) { - $overlay.data('_overlay_is_deleted', false); - if (!isUndefined(zIndex)) { - $overlay.css('z-index', zIndex); - } - } - else { - if (isUndefined(zIndex)) { - zIndex = 2000; - } - $overlay = $('
') - .appendTo(document.body) - .reflow() - .css('z-index', zIndex); - } - let level = $overlay.data('_overlay_level') || 0; - return $overlay.data('_overlay_level', ++level).addClass('mdui-overlay-show'); -}; - -$.hideOverlay = function (force = false) { - const $overlay = $('.mdui-overlay'); - if (!$overlay.length) { - return; - } - let level = force ? 1 : $overlay.data('_overlay_level'); - if (level > 1) { - $overlay.data('_overlay_level', --level); - return; - } - $overlay - .data('_overlay_level', 0) - .removeClass('mdui-overlay-show') - .data('_overlay_is_deleted', true) - .transitionEnd(() => { - if ($overlay.data('_overlay_is_deleted')) { - $overlay.remove(); - } - }); -}; - -$.lockScreen = function () { - // 不直接把 body 设为 box-sizing: border-box,避免污染全局样式 - const newBodyWidth = $body.width(); - let level = $body.data('_lockscreen_level') || 0; - $body - .addClass('mdui-locked') - .width(newBodyWidth) - .data('_lockscreen_level', ++level); -}; - -$.unlockScreen = function (force = false) { - let level = force ? 1 : $body.data('_lockscreen_level'); - if (level > 1) { - $body.data('_lockscreen_level', --level); - return; - } - $body.data('_lockscreen_level', 0).removeClass('mdui-locked').width(''); -}; - -$.throttle = function (fn, delay = 16) { - let timer = null; - return function (...args) { - if (isNull(timer)) { - timer = setTimeout(() => { - fn.apply(this, args); - timer = null; - }, delay); - } - }; -}; - -const GUID = {}; -$.guid = function (name) { - if (!isUndefined(name) && !isUndefined(GUID[name])) { - return GUID[name]; - } - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - const guid = '_' + - s4() + - s4() + - '-' + - s4() + - '-' + - s4() + - '-' + - s4() + - '-' + - s4() + - s4() + - s4(); - if (!isUndefined(name)) { - GUID[name] = guid; - } - return guid; -}; - -mdui.mutation = function (selector, apiInit) { - if (isUndefined(selector) || isUndefined(apiInit)) { - $(document).mutation(); - return; - } - entries[selector] = apiInit; - $(selector).each((i, element) => mutation(selector, apiInit, i, element)); -}; - -/** - * 触发组件上的事件 - * @param eventName 事件名 - * @param componentName 组件名 - * @param target 在该元素上触发事件 - * @param instance 组件实例 - * @param parameters 事件参数 - */ -function componentEvent(eventName, componentName, target, instance, parameters) { - if (!parameters) { - parameters = {}; - } - // @ts-ignore - parameters.inst = instance; - const fullEventName = `${eventName}.mdui.${componentName}`; - // jQuery 事件 - // @ts-ignore - if (typeof jQuery !== 'undefined') { - // @ts-ignore - jQuery(target).trigger(fullEventName, parameters); - } - const $target = $(target); - // mdui.jq 事件 - $target.trigger(fullEventName, parameters); - const eventParams = { - bubbles: true, - cancelable: true, - detail: parameters, - }; - const eventObject = new CustomEvent(fullEventName, eventParams); - // @ts-ignore - eventObject._detail = parameters; - $target[0].dispatchEvent(eventObject); -} - -const DEFAULT_OPTIONS = { - tolerance: 5, - offset: 0, - initialClass: 'mdui-headroom', - pinnedClass: 'mdui-headroom-pinned-top', - unpinnedClass: 'mdui-headroom-unpinned-top', -}; -class Headroom { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS); - /** - * 当前 headroom 的状态 - */ - this.state = 'pinned'; - /** - * 当前是否启用 - */ - this.isEnable = false; - /** - * 上次滚动后,垂直方向的距离 - */ - this.lastScrollY = 0; - /** - * AnimationFrame ID - */ - this.rafId = 0; - this.$element = $(selector).first(); - extend(this.options, options); - // tolerance 参数若为数值,转换为对象 - const tolerance = this.options.tolerance; - if (isNumber(tolerance)) { - this.options.tolerance = { - down: tolerance, - up: tolerance, - }; - } - this.enable(); - } - /** - * 滚动时的处理 - */ - onScroll() { - this.rafId = window.requestAnimationFrame(() => { - const currentScrollY = window.pageYOffset; - const direction = currentScrollY > this.lastScrollY ? 'down' : 'up'; - const tolerance = this.options.tolerance[direction]; - const scrolled = Math.abs(currentScrollY - this.lastScrollY); - const toleranceExceeded = scrolled >= tolerance; - if (currentScrollY > this.lastScrollY && - currentScrollY >= this.options.offset && - toleranceExceeded) { - this.unpin(); - } - else if ((currentScrollY < this.lastScrollY && toleranceExceeded) || - currentScrollY <= this.options.offset) { - this.pin(); - } - this.lastScrollY = currentScrollY; - }); - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'headroom', this.$element, this); - } - /** - * 动画结束的回调 - */ - transitionEnd() { - if (this.state === 'pinning') { - this.state = 'pinned'; - this.triggerEvent('pinned'); - } - if (this.state === 'unpinning') { - this.state = 'unpinned'; - this.triggerEvent('unpinned'); - } - } - /** - * 使元素固定住 - */ - pin() { - if (this.state === 'pinning' || - this.state === 'pinned' || - !this.$element.hasClass(this.options.initialClass)) { - return; - } - this.triggerEvent('pin'); - this.state = 'pinning'; - this.$element - .removeClass(this.options.unpinnedClass) - .addClass(this.options.pinnedClass) - .transitionEnd(() => this.transitionEnd()); - } - /** - * 使元素隐藏 - */ - unpin() { - if (this.state === 'unpinning' || - this.state === 'unpinned' || - !this.$element.hasClass(this.options.initialClass)) { - return; - } - this.triggerEvent('unpin'); - this.state = 'unpinning'; - this.$element - .removeClass(this.options.pinnedClass) - .addClass(this.options.unpinnedClass) - .transitionEnd(() => this.transitionEnd()); - } - /** - * 启用 headroom 插件 - */ - enable() { - if (this.isEnable) { - return; - } - this.isEnable = true; - this.state = 'pinned'; - this.$element - .addClass(this.options.initialClass) - .removeClass(this.options.pinnedClass) - .removeClass(this.options.unpinnedClass); - this.lastScrollY = window.pageYOffset; - $window.on('scroll', () => this.onScroll()); - } - /** - * 禁用 headroom 插件 - */ - disable() { - if (!this.isEnable) { - return; - } - this.isEnable = false; - this.$element - .removeClass(this.options.initialClass) - .removeClass(this.options.pinnedClass) - .removeClass(this.options.unpinnedClass); - $window.off('scroll', () => this.onScroll()); - window.cancelAnimationFrame(this.rafId); - } - /** - * 获取当前状态。共包含四种状态:`pinning`、`pinned`、`unpinning`、`unpinned` - */ - getState() { - return this.state; - } -} -mdui.Headroom = Headroom; - -/** - * 解析 DATA API 参数 - * @param element 元素 - * @param name 属性名 - */ -function parseOptions(element, name) { - const attr = $(element).attr(name); - if (!attr) { - return {}; - } - return new Function('', `var json = ${attr}; return JSON.parse(JSON.stringify(json));`)(); -} - -const customAttr = 'mdui-headroom'; -$(() => { - mdui.mutation(`[${customAttr}]`, function () { - new mdui.Headroom(this, parseOptions(this, customAttr)); - }); -}); - -const DEFAULT_OPTIONS$1 = { - accordion: false, -}; -class CollapseAbstract { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$1); - // CSS 类名 - const classPrefix = `mdui-${this.getNamespace()}-item`; - this.classItem = classPrefix; - this.classItemOpen = `${classPrefix}-open`; - this.classHeader = `${classPrefix}-header`; - this.classBody = `${classPrefix}-body`; - this.$element = $(selector).first(); - extend(this.options, options); - this.bindEvent(); - } - /** - * 绑定事件 - */ - bindEvent() { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - const $items = this.getItems(); - // 点击 header 时,打开/关闭 item - this.$element.on('click', `.${this.classHeader}`, function () { - const $header = $(this); - const $item = $header.parent(); - $items.each((_, item) => { - if ($item.is(item)) { - that.toggle(item); - } - }); - }); - // 点击关闭按钮时,关闭 item - this.$element.on('click', `[mdui-${this.getNamespace()}-item-close]`, function () { - const $target = $(this); - const $item = $target.parents(`.${that.classItem}`).first(); - that.close($item); - }); - } - /** - * 指定 item 是否处于打开状态 - * @param $item - */ - isOpen($item) { - return $item.hasClass(this.classItemOpen); - } - /** - * 获取所有 item - */ - getItems() { - return this.$element.children(`.${this.classItem}`); - } - /** - * 获取指定 item - * @param item - */ - getItem(item) { - if (isNumber(item)) { - return this.getItems().eq(item); - } - return $(item).first(); - } - /** - * 触发组件事件 - * @param name 事件名 - * @param $item 事件触发的目标 item - */ - triggerEvent(name, $item) { - componentEvent(name, this.getNamespace(), $item, this); - } - /** - * 动画结束回调 - * @param $content body 元素 - * @param $item item 元素 - */ - transitionEnd($content, $item) { - if (this.isOpen($item)) { - $content.transition(0).height('auto').reflow().transition(''); - this.triggerEvent('opened', $item); - } - else { - $content.height(''); - this.triggerEvent('closed', $item); - } - } - /** - * 打开指定面板项 - * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象 - */ - open(item) { - const $item = this.getItem(item); - if (this.isOpen($item)) { - return; - } - // 关闭其他项 - if (this.options.accordion) { - this.$element.children(`.${this.classItemOpen}`).each((_, element) => { - const $element = $(element); - if (!$element.is($item)) { - this.close($element); - } - }); - } - const $content = $item.children(`.${this.classBody}`); - $content - .height($content[0].scrollHeight) - .transitionEnd(() => this.transitionEnd($content, $item)); - this.triggerEvent('open', $item); - $item.addClass(this.classItemOpen); - } - /** - * 关闭指定面板项 - * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象 - */ - close(item) { - const $item = this.getItem(item); - if (!this.isOpen($item)) { - return; - } - const $content = $item.children(`.${this.classBody}`); - this.triggerEvent('close', $item); - $item.removeClass(this.classItemOpen); - $content - .transition(0) - .height($content[0].scrollHeight) - .reflow() - .transition('') - .height('') - .transitionEnd(() => this.transitionEnd($content, $item)); - } - /** - * 切换指定面板项的打开状态 - * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象 - */ - toggle(item) { - const $item = this.getItem(item); - this.isOpen($item) ? this.close($item) : this.open($item); - } - /** - * 打开所有面板项 - */ - openAll() { - this.getItems().each((_, element) => this.open(element)); - } - /** - * 关闭所有面板项 - */ - closeAll() { - this.getItems().each((_, element) => this.close(element)); - } -} - -class Collapse extends CollapseAbstract { - getNamespace() { - return 'collapse'; - } -} -mdui.Collapse = Collapse; - -const customAttr$1 = 'mdui-collapse'; -$(() => { - mdui.mutation(`[${customAttr$1}]`, function () { - new mdui.Collapse(this, parseOptions(this, customAttr$1)); - }); -}); - -class Panel extends CollapseAbstract { - getNamespace() { - return 'panel'; - } -} -mdui.Panel = Panel; - -const customAttr$2 = 'mdui-panel'; -$(() => { - mdui.mutation(`[${customAttr$2}]`, function () { - new mdui.Panel(this, parseOptions(this, customAttr$2)); - }); -}); - -class Table { - constructor(selector) { - /** - * 表头 tr 元素 - */ - this.$thRow = $(); - /** - * 表格 body 中的 tr 元素 - */ - this.$tdRows = $(); - /** - * 表头的 checkbox 元素 - */ - this.$thCheckbox = $(); - /** - * 表格 body 中的 checkbox 元素 - */ - this.$tdCheckboxs = $(); - /** - * 表格行是否可选择 - */ - this.selectable = false; - /** - * 已选中的行数 - */ - this.selectedRow = 0; - this.$element = $(selector).first(); - this.init(); - } - /** - * 初始化表格 - */ - init() { - this.$thRow = this.$element.find('thead tr'); - this.$tdRows = this.$element.find('tbody tr'); - this.selectable = this.$element.hasClass('mdui-table-selectable'); - this.updateThCheckbox(); - this.updateTdCheckbox(); - this.updateNumericCol(); - } - /** - * 生成 checkbox 的 HTML 结构 - * @param tag 标签名 - */ - createCheckboxHTML(tag) { - return (`<${tag} class="mdui-table-cell-checkbox">` + - '' + - ``); - } - /** - * 更新表头 checkbox 的状态 - */ - updateThCheckboxStatus() { - const checkbox = this.$thCheckbox[0]; - const selectedRow = this.selectedRow; - const tdRowsLength = this.$tdRows.length; - checkbox.checked = selectedRow === tdRowsLength; - checkbox.indeterminate = !!selectedRow && selectedRow !== tdRowsLength; - } - /** - * 更新表格行的 checkbox - */ - updateTdCheckbox() { - const rowSelectedClass = 'mdui-table-row-selected'; - this.$tdRows.each((_, row) => { - const $row = $(row); - // 移除旧的 checkbox - $row.find('.mdui-table-cell-checkbox').remove(); - if (!this.selectable) { - return; - } - // 创建 DOM - const $checkbox = $(this.createCheckboxHTML('td')) - .prependTo($row) - .find('input[type="checkbox"]'); - // 默认选中的行 - if ($row.hasClass(rowSelectedClass)) { - $checkbox[0].checked = true; - this.selectedRow++; - } - this.updateThCheckboxStatus(); - // 绑定事件 - $checkbox.on('change', () => { - if ($checkbox[0].checked) { - $row.addClass(rowSelectedClass); - this.selectedRow++; - } - else { - $row.removeClass(rowSelectedClass); - this.selectedRow--; - } - this.updateThCheckboxStatus(); - }); - this.$tdCheckboxs = this.$tdCheckboxs.add($checkbox); - }); - } - /** - * 更新表头的 checkbox - */ - updateThCheckbox() { - // 移除旧的 checkbox - this.$thRow.find('.mdui-table-cell-checkbox').remove(); - if (!this.selectable) { - return; - } - this.$thCheckbox = $(this.createCheckboxHTML('th')) - .prependTo(this.$thRow) - .find('input[type="checkbox"]') - .on('change', () => { - const isCheckedAll = this.$thCheckbox[0].checked; - this.selectedRow = isCheckedAll ? this.$tdRows.length : 0; - this.$tdCheckboxs.each((_, checkbox) => { - checkbox.checked = isCheckedAll; - }); - this.$tdRows.each((_, row) => { - isCheckedAll - ? $(row).addClass('mdui-table-row-selected') - : $(row).removeClass('mdui-table-row-selected'); - }); - }); - } - /** - * 更新数值列 - */ - updateNumericCol() { - const numericClass = 'mdui-table-col-numeric'; - this.$thRow.find('th').each((i, th) => { - const isNumericCol = $(th).hasClass(numericClass); - this.$tdRows.each((_, row) => { - const $td = $(row).find('td').eq(i); - isNumericCol - ? $td.addClass(numericClass) - : $td.removeClass(numericClass); - }); - }); - } -} -const dataName = '_mdui_table'; -$(() => { - mdui.mutation('.mdui-table', function () { - const $element = $(this); - if (!$element.data(dataName)) { - $element.data(dataName, new Table($element)); - } - }); -}); -mdui.updateTables = function (selector) { - const $elements = isUndefined(selector) ? $('.mdui-table') : $(selector); - $elements.each((_, element) => { - const $element = $(element); - const instance = $element.data(dataName); - if (instance) { - instance.init(); - } - else { - $element.data(dataName, new Table($element)); - } - }); -}; - -/** - * touch 事件后的 500ms 内禁用 mousedown 事件 - * - * 不支持触控的屏幕上事件顺序为 mousedown -> mouseup -> click - * 支持触控的屏幕上事件顺序为 touchstart -> touchend -> mousedown -> mouseup -> click - * - * 在每一个事件中都使用 TouchHandler.isAllow(event) 判断事件是否可执行 - * 在 touchstart 和 touchmove、touchend、touchcancel - * - * (function () { - * $document - * .on(start, function (e) { - * if (!isAllow(e)) { - * return; - * } - * register(e); - * console.log(e.type); - * }) - * .on(move, function (e) { - * if (!isAllow(e)) { - * return; - * } - * console.log(e.type); - * }) - * .on(end, function (e) { - * if (!isAllow(e)) { - * return; - * } - * console.log(e.type); - * }) - * .on(unlock, register); - * })(); - */ -const startEvent = 'touchstart mousedown'; -const moveEvent = 'touchmove mousemove'; -const endEvent = 'touchend mouseup'; -const cancelEvent = 'touchcancel mouseleave'; -const unlockEvent = 'touchend touchmove touchcancel'; -let touches = 0; -/** - * 该事件是否被允许,在执行事件前调用该方法判断事件是否可以执行 - * 若已触发 touch 事件,则阻止之后的鼠标事件 - * @param event - */ -function isAllow(event) { - return !(touches && - [ - 'mousedown', - 'mouseup', - 'mousemove', - 'click', - 'mouseover', - 'mouseout', - 'mouseenter', - 'mouseleave', - ].indexOf(event.type) > -1); -} -/** - * 在 touchstart 和 touchmove、touchend、touchcancel 事件中调用该方法注册事件 - * @param event - */ -function register(event) { - if (event.type === 'touchstart') { - // 触发了 touch 事件 - touches += 1; - } - else if (['touchmove', 'touchend', 'touchcancel'].indexOf(event.type) > -1) { - // touch 事件结束 500ms 后解除对鼠标事件的阻止 - setTimeout(function () { - if (touches) { - touches -= 1; - } - }, 500); - } -} - -/** - * Inspired by https://github.com/nolimits4web/Framework7/blob/master/src/js/fast-clicks.js - * https://github.com/nolimits4web/Framework7/blob/master/LICENSE - * - * Inspired by https://github.com/fians/Waves - */ -/** - * 显示涟漪动画 - * @param event - * @param $ripple - */ -function show(event, $ripple) { - // 鼠标右键不产生涟漪 - if (event instanceof MouseEvent && event.button === 2) { - return; - } - // 点击位置坐标 - const touchPosition = typeof TouchEvent !== 'undefined' && - event instanceof TouchEvent && - event.touches.length - ? event.touches[0] - : event; - const touchStartX = touchPosition.pageX; - const touchStartY = touchPosition.pageY; - // 涟漪位置 - const offset = $ripple.offset(); - const height = $ripple.innerHeight(); - const width = $ripple.innerWidth(); - const center = { - x: touchStartX - offset.left, - y: touchStartY - offset.top, - }; - const diameter = Math.max(Math.pow(Math.pow(height, 2) + Math.pow(width, 2), 0.5), 48); - // 涟漪扩散动画 - const translate = `translate3d(${-center.x + width / 2}px,` + - `${-center.y + height / 2}px, 0) scale(1)`; - // 涟漪的 DOM 结构,并缓存动画效果 - $(`
`) - .data('_ripple_wave_translate', translate) - .prependTo($ripple) - .reflow() - .transform(translate); -} -/** - * 隐藏并移除涟漪 - * @param $wave - */ -function removeRipple($wave) { - if (!$wave.length || $wave.data('_ripple_wave_removed')) { - return; - } - $wave.data('_ripple_wave_removed', true); - let removeTimer = setTimeout(() => $wave.remove(), 400); - const translate = $wave.data('_ripple_wave_translate'); - $wave - .addClass('mdui-ripple-wave-fill') - .transform(translate.replace('scale(1)', 'scale(1.01)')) - .transitionEnd(() => { - clearTimeout(removeTimer); - $wave - .addClass('mdui-ripple-wave-out') - .transform(translate.replace('scale(1)', 'scale(1.01)')); - removeTimer = setTimeout(() => $wave.remove(), 700); - setTimeout(() => { - $wave.transitionEnd(() => { - clearTimeout(removeTimer); - $wave.remove(); - }); - }, 0); - }); -} -/** - * 隐藏涟漪动画 - * @param this - */ -function hide() { - const $ripple = $(this); - $ripple.children('.mdui-ripple-wave').each((_, wave) => { - removeRipple($(wave)); - }); - $ripple.off(`${moveEvent} ${endEvent} ${cancelEvent}`, hide); -} -/** - * 显示涟漪,并绑定 touchend 等事件 - * @param event - */ -function showRipple(event) { - if (!isAllow(event)) { - return; - } - register(event); - // Chrome 59 点击滚动条时,会在 document 上触发事件 - if (event.target === document) { - return; - } - const $target = $(event.target); - // 获取含 .mdui-ripple 类的元素 - const $ripple = $target.hasClass('mdui-ripple') - ? $target - : $target.parents('.mdui-ripple').first(); - if (!$ripple.length) { - return; - } - // 禁用状态的元素上不产生涟漪效果 - if ($ripple.prop('disabled') || !isUndefined($ripple.attr('disabled'))) { - return; - } - if (event.type === 'touchstart') { - let hidden = false; - // touchstart 触发指定时间后开始涟漪动画,避免手指滑动时也触发涟漪 - let timer = setTimeout(() => { - timer = 0; - show(event, $ripple); - }, 200); - const hideRipple = () => { - // 如果手指没有移动,且涟漪动画还没有开始,则开始涟漪动画 - if (timer) { - clearTimeout(timer); - timer = 0; - show(event, $ripple); - } - if (!hidden) { - hidden = true; - hide.call($ripple); - } - }; - // 手指移动后,移除涟漪动画 - const touchMove = () => { - if (timer) { - clearTimeout(timer); - timer = 0; - } - hideRipple(); - }; - $ripple.on('touchmove', touchMove).on('touchend touchcancel', hideRipple); - } - else { - show(event, $ripple); - $ripple.on(`${moveEvent} ${endEvent} ${cancelEvent}`, hide); - } -} -$(() => { - $document.on(startEvent, showRipple).on(unlockEvent, register); -}); - -const defaultData = { - reInit: false, - domLoadedEvent: false, -}; -/** - * 输入框事件 - * @param event - * @param data - */ -function inputEvent(event, data = {}) { - data = extend({}, defaultData, data); - const input = event.target; - const $input = $(input); - const eventType = event.type; - const value = $input.val(); - // 文本框类型 - const inputType = $input.attr('type') || ''; - if (['checkbox', 'button', 'submit', 'range', 'radio', 'image'].indexOf(inputType) > -1) { - return; - } - const $textfield = $input.parent('.mdui-textfield'); - // 输入框是否聚焦 - if (eventType === 'focus') { - $textfield.addClass('mdui-textfield-focus'); - } - if (eventType === 'blur') { - $textfield.removeClass('mdui-textfield-focus'); - } - // 输入框是否为空 - if (eventType === 'blur' || eventType === 'input') { - value - ? $textfield.addClass('mdui-textfield-not-empty') - : $textfield.removeClass('mdui-textfield-not-empty'); - } - // 输入框是否禁用 - input.disabled - ? $textfield.addClass('mdui-textfield-disabled') - : $textfield.removeClass('mdui-textfield-disabled'); - // 表单验证 - if ((eventType === 'input' || eventType === 'blur') && - !data.domLoadedEvent && - input.validity) { - input.validity.valid - ? $textfield.removeClass('mdui-textfield-invalid-html5') - : $textfield.addClass('mdui-textfield-invalid-html5'); - } - // textarea 高度自动调整 - if ($input.is('textarea')) { - // IE bug:textarea 的值仅为多个换行,不含其他内容时,textarea 的高度不准确 - // 此时,在计算高度前,在值的开头加入一个空格,计算完后,移除空格 - const inputValue = value; - let hasExtraSpace = false; - if (inputValue.replace(/[\r\n]/g, '') === '') { - $input.val(' ' + inputValue); - hasExtraSpace = true; - } - // 设置 textarea 高度 - $input.outerHeight(''); - const height = $input.outerHeight(); - const scrollHeight = input.scrollHeight; - if (scrollHeight > height) { - $input.outerHeight(scrollHeight); - } - // 计算完,还原 textarea 的值 - if (hasExtraSpace) { - $input.val(inputValue); - } - } - // 实时字数统计 - if (data.reInit) { - $textfield.find('.mdui-textfield-counter').remove(); - } - const maxLength = $input.attr('maxlength'); - if (maxLength) { - if (data.reInit || data.domLoadedEvent) { - $('
' + - ` / ${maxLength}` + - '
').appendTo($textfield); - } - $textfield - .find('.mdui-textfield-counter-inputed') - .text(value.length.toString()); - } - // 含 帮助文本、错误提示、字数统计 时,增加文本框底部内边距 - if ($textfield.find('.mdui-textfield-helper').length || - $textfield.find('.mdui-textfield-error').length || - maxLength) { - $textfield.addClass('mdui-textfield-has-bottom'); - } -} -$(() => { - // 绑定事件 - $document.on('input focus blur', '.mdui-textfield-input', { useCapture: true }, inputEvent); - // 可展开文本框展开 - $document.on('click', '.mdui-textfield-expandable .mdui-textfield-icon', function () { - $(this) - .parents('.mdui-textfield') - .addClass('mdui-textfield-expanded') - .find('.mdui-textfield-input')[0] - .focus(); - }); - // 可展开文本框关闭 - $document.on('click', '.mdui-textfield-expanded .mdui-textfield-close', function () { - $(this) - .parents('.mdui-textfield') - .removeClass('mdui-textfield-expanded') - .find('.mdui-textfield-input') - .val(''); - }); - /** - * 初始化文本框 - */ - mdui.mutation('.mdui-textfield', function () { - $(this).find('.mdui-textfield-input').trigger('input', { - domLoadedEvent: true, - }); - }); -}); -mdui.updateTextFields = function (selector) { - const $elements = isUndefined(selector) ? $('.mdui-textfield') : $(selector); - $elements.each((_, element) => { - $(element).find('.mdui-textfield-input').trigger('input', { - reInit: true, - }); - }); -}; - -/** - * 滑块的值改变后修改滑块样式 - * @param $slider - */ -function updateValueStyle($slider) { - const data = $slider.data(); - const $track = data._slider_$track; - const $fill = data._slider_$fill; - const $thumb = data._slider_$thumb; - const $input = data._slider_$input; - const min = data._slider_min; - const max = data._slider_max; - const isDisabled = data._slider_disabled; - const isDiscrete = data._slider_discrete; - const $thumbText = data._slider_$thumbText; - const value = $input.val(); - const percent = ((value - min) / (max - min)) * 100; - $fill.width(`${percent}%`); - $track.width(`${100 - percent}%`); - if (isDisabled) { - $fill.css('padding-right', '6px'); - $track.css('padding-left', '6px'); - } - $thumb.css('left', `${percent}%`); - if (isDiscrete) { - $thumbText.text(value); - } - percent === 0 - ? $slider.addClass('mdui-slider-zero') - : $slider.removeClass('mdui-slider-zero'); -} -/** - * 重新初始化滑块 - * @param $slider - */ -function reInit($slider) { - const $track = $('
'); - const $fill = $('
'); - const $thumb = $('
'); - const $input = $slider.find('input[type="range"]'); - const isDisabled = $input[0].disabled; - const isDiscrete = $slider.hasClass('mdui-slider-discrete'); - // 禁用状态 - isDisabled - ? $slider.addClass('mdui-slider-disabled') - : $slider.removeClass('mdui-slider-disabled'); - // 重新填充 HTML - $slider.find('.mdui-slider-track').remove(); - $slider.find('.mdui-slider-fill').remove(); - $slider.find('.mdui-slider-thumb').remove(); - $slider.append($track).append($fill).append($thumb); - // 间续型滑块 - let $thumbText = $(); - if (isDiscrete) { - $thumbText = $(''); - $thumb.empty().append($thumbText); - } - $slider.data('_slider_$track', $track); - $slider.data('_slider_$fill', $fill); - $slider.data('_slider_$thumb', $thumb); - $slider.data('_slider_$input', $input); - $slider.data('_slider_min', $input.attr('min')); - $slider.data('_slider_max', $input.attr('max')); - $slider.data('_slider_disabled', isDisabled); - $slider.data('_slider_discrete', isDiscrete); - $slider.data('_slider_$thumbText', $thumbText); - // 设置默认值 - updateValueStyle($slider); -} -const rangeSelector = '.mdui-slider input[type="range"]'; -$(() => { - // 滑块滑动事件 - $document.on('input change', rangeSelector, function () { - const $slider = $(this).parent(); - updateValueStyle($slider); - }); - // 开始触摸滑块事件 - $document.on(startEvent, rangeSelector, function (event) { - if (!isAllow(event)) { - return; - } - register(event); - if (this.disabled) { - return; - } - const $slider = $(this).parent(); - $slider.addClass('mdui-slider-focus'); - }); - // 结束触摸滑块事件 - $document.on(endEvent, rangeSelector, function (event) { - if (!isAllow(event)) { - return; - } - if (this.disabled) { - return; - } - const $slider = $(this).parent(); - $slider.removeClass('mdui-slider-focus'); - }); - $document.on(unlockEvent, rangeSelector, register); - /** - * 初始化滑块 - */ - mdui.mutation('.mdui-slider', function () { - reInit($(this)); - }); -}); -mdui.updateSliders = function (selector) { - const $elements = isUndefined(selector) ? $('.mdui-slider') : $(selector); - $elements.each((_, element) => { - reInit($(element)); - }); -}; - -const DEFAULT_OPTIONS$2 = { - trigger: 'hover', -}; -class Fab { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$2); - /** - * 当前 fab 的状态 - */ - this.state = 'closed'; - this.$element = $(selector).first(); - extend(this.options, options); - this.$btn = this.$element.find('.mdui-fab'); - this.$dial = this.$element.find('.mdui-fab-dial'); - this.$dialBtns = this.$dial.find('.mdui-fab'); - if (this.options.trigger === 'hover') { - this.$btn.on('touchstart mouseenter', () => this.open()); - this.$element.on('mouseleave', () => this.close()); - } - if (this.options.trigger === 'click') { - this.$btn.on(startEvent, () => this.open()); - } - // 触摸屏幕其他地方关闭快速拨号 - $document.on(startEvent, (event) => { - if ($(event.target).parents('.mdui-fab-wrapper').length) { - return; - } - this.close(); - }); - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'fab', this.$element, this); - } - /** - * 当前是否为打开状态 - */ - isOpen() { - return this.state === 'opening' || this.state === 'opened'; - } - /** - * 打开快速拨号菜单 - */ - open() { - if (this.isOpen()) { - return; - } - // 为菜单中的按钮添加不同的 transition-delay - this.$dialBtns.each((index, btn) => { - const delay = `${15 * (this.$dialBtns.length - index)}ms`; - btn.style.transitionDelay = delay; - btn.style.webkitTransitionDelay = delay; - }); - this.$dial.css('height', 'auto').addClass('mdui-fab-dial-show'); - // 如果按钮中存在 .mdui-fab-opened 的图标,则进行图标切换 - if (this.$btn.find('.mdui-fab-opened').length) { - this.$btn.addClass('mdui-fab-opened'); - } - this.state = 'opening'; - this.triggerEvent('open'); - // 打开顺序为从下到上逐个打开,最上面的打开后才表示动画完成 - this.$dialBtns.first().transitionEnd(() => { - if (this.$btn.hasClass('mdui-fab-opened')) { - this.state = 'opened'; - this.triggerEvent('opened'); - } - }); - } - /** - * 关闭快速拨号菜单 - */ - close() { - if (!this.isOpen()) { - return; - } - // 为菜单中的按钮添加不同的 transition-delay - this.$dialBtns.each((index, btn) => { - const delay = `${15 * index}ms`; - btn.style.transitionDelay = delay; - btn.style.webkitTransitionDelay = delay; - }); - this.$dial.removeClass('mdui-fab-dial-show'); - this.$btn.removeClass('mdui-fab-opened'); - this.state = 'closing'; - this.triggerEvent('close'); - // 从上往下依次关闭,最后一个关闭后才表示动画完成 - this.$dialBtns.last().transitionEnd(() => { - if (this.$btn.hasClass('mdui-fab-opened')) { - return; - } - this.state = 'closed'; - this.triggerEvent('closed'); - this.$dial.css('height', 0); - }); - } - /** - * 切换快速拨号菜单的打开状态 - */ - toggle() { - this.isOpen() ? this.close() : this.open(); - } - /** - * 以动画的形式显示整个浮动操作按钮 - */ - show() { - this.$element.removeClass('mdui-fab-hide'); - } - /** - * 以动画的形式隐藏整个浮动操作按钮 - */ - hide() { - this.$element.addClass('mdui-fab-hide'); - } - /** - * 返回当前快速拨号菜单的打开状态。共包含四种状态:`opening`、`opened`、`closing`、`closed` - */ - getState() { - return this.state; - } -} -mdui.Fab = Fab; - -const customAttr$3 = 'mdui-fab'; -$(() => { - // mouseenter 不冒泡,无法进行事件委托,这里用 mouseover 代替。 - // 不管是 click 、 mouseover 还是 touchstart ,都先初始化。 - $document.on('touchstart mousedown mouseover', `[${customAttr$3}]`, function () { - new mdui.Fab(this, parseOptions(this, customAttr$3)); - }); -}); - -/** - * 最终生成的元素结构为: - * - *
// $element - * State 1 // $selected - *
// $menu - *
State 1
// $items - *
State 2
- *
State 3
- *
- *
- */ -const DEFAULT_OPTIONS$3 = { - position: 'auto', - gutter: 16, -}; -class Select { - constructor(selector, options = {}) { - /** - * 生成的 `
` 元素的 JQ 对象 - */ - this.$element = $(); - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$3); - /** - * select 的 size 属性的值,根据该值设置 select 的高度 - */ - this.size = 0; - /** - * 占位元素,显示已选中菜单项的文本 - */ - this.$selected = $(); - /** - * 菜单项的外层元素的 JQ 对象 - */ - this.$menu = $(); - /** - * 菜单项数组的 JQ 对象 - */ - this.$items = $(); - /** - * 当前选中的菜单项的索引号 - */ - this.selectedIndex = 0; - /** - * 当前选中菜单项的文本 - */ - this.selectedText = ''; - /** - * 当前选中菜单项的值 - */ - this.selectedValue = ''; - /** - * 当前 select 的状态 - */ - this.state = 'closed'; - this.$native = $(selector).first(); - this.$native.hide(); - extend(this.options, options); - // 为当前 select 生成唯一 ID - this.uniqueID = $.guid(); - // 生成 select - this.handleUpdate(); - // 点击 select 外面区域关闭 - $document.on('click touchstart', (event) => { - const $target = $(event.target); - if (this.isOpen() && - !$target.is(this.$element) && - !contains(this.$element[0], $target[0])) { - this.close(); - } - }); - } - /** - * 调整菜单位置 - */ - readjustMenu() { - const windowHeight = $window.height(); - // mdui-select 高度 - const elementHeight = this.$element.height(); - // 菜单项高度 - const $itemFirst = this.$items.first(); - const itemHeight = $itemFirst.height(); - const itemMargin = parseInt($itemFirst.css('margin-top')); - // 菜单高度 - const menuWidth = this.$element.innerWidth() + 0.01; // 必须比真实宽度多一点,不然会出现省略号 - let menuHeight = itemHeight * this.size + itemMargin * 2; - // mdui-select 在窗口中的位置 - const elementTop = this.$element[0].getBoundingClientRect().top; - let transformOriginY; - let menuMarginTop; - if (this.options.position === 'bottom') { - menuMarginTop = elementHeight; - transformOriginY = '0px'; - } - else if (this.options.position === 'top') { - menuMarginTop = -menuHeight - 1; - transformOriginY = '100%'; - } - else { - // 菜单高度不能超过窗口高度 - const menuMaxHeight = windowHeight - this.options.gutter * 2; - if (menuHeight > menuMaxHeight) { - menuHeight = menuMaxHeight; - } - // 菜单的 margin-top - menuMarginTop = -(itemMargin + - this.selectedIndex * itemHeight + - (itemHeight - elementHeight) / 2); - const menuMaxMarginTop = -(itemMargin + - (this.size - 1) * itemHeight + - (itemHeight - elementHeight) / 2); - if (menuMarginTop < menuMaxMarginTop) { - menuMarginTop = menuMaxMarginTop; - } - // 菜单不能超出窗口 - const menuTop = elementTop + menuMarginTop; - if (menuTop < this.options.gutter) { - // 不能超出窗口上方 - menuMarginTop = -(elementTop - this.options.gutter); - } - else if (menuTop + menuHeight + this.options.gutter > windowHeight) { - // 不能超出窗口下方 - menuMarginTop = -(elementTop + - menuHeight + - this.options.gutter - - windowHeight); - } - // transform 的 Y 轴坐标 - transformOriginY = `${this.selectedIndex * itemHeight + itemHeight / 2 + itemMargin}px`; - } - // 设置样式 - this.$element.innerWidth(menuWidth); - this.$menu - .innerWidth(menuWidth) - .height(menuHeight) - .css({ - 'margin-top': menuMarginTop + 'px', - 'transform-origin': 'center ' + transformOriginY + ' 0', - }); - } - /** - * select 是否为打开状态 - */ - isOpen() { - return this.state === 'opening' || this.state === 'opened'; - } - /** - * 对原生 select 组件进行了修改后,需要调用该方法 - */ - handleUpdate() { - if (this.isOpen()) { - this.close(); - } - this.selectedValue = this.$native.val(); - const itemsData = []; - this.$items = $(); - // 生成 HTML - this.$native.find('option').each((index, option) => { - const text = option.textContent || ''; - const value = option.value; - const disabled = option.disabled; - const selected = this.selectedValue === value; - itemsData.push({ - value, - text, - disabled, - selected, - index, - }); - if (selected) { - this.selectedText = text; - this.selectedIndex = index; - } - this.$items = this.$items.add('
${text}
`); - }); - this.$selected = $(`${this.selectedText}`); - this.$element = $(`
`) - .show() - .append(this.$selected); - this.$menu = $('
') - .appendTo(this.$element) - .append(this.$items); - $(`#${this.uniqueID}`).remove(); - this.$native.after(this.$element); - // 根据 select 的 size 属性设置高度 - this.size = parseInt(this.$native.attr('size') || '0'); - if (this.size <= 0) { - this.size = this.$items.length; - if (this.size > 8) { - this.size = 8; - } - } - // 点击选项时关闭下拉菜单 - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - this.$items.on('click', function () { - if (that.state === 'closing') { - return; - } - const $item = $(this); - const index = $item.index(); - const data = itemsData[index]; - if (data.disabled) { - return; - } - that.$selected.text(data.text); - that.$native.val(data.value); - that.$items.removeAttr('selected'); - $item.attr('selected', ''); - that.selectedIndex = data.index; - that.selectedValue = data.value; - that.selectedText = data.text; - that.$native.trigger('change'); - that.close(); - }); - // 点击 $element 时打开下拉菜单 - this.$element.on('click', (event) => { - const $target = $(event.target); - // 在菜单上点击时不打开 - if ($target.is('.mdui-select-menu') || - $target.is('.mdui-select-menu-item')) { - return; - } - this.toggle(); - }); - } - /** - * 动画结束的回调 - */ - transitionEnd() { - this.$element.removeClass('mdui-select-closing'); - if (this.state === 'opening') { - this.state = 'opened'; - this.triggerEvent('opened'); - this.$menu.css('overflow-y', 'auto'); - } - if (this.state === 'closing') { - this.state = 'closed'; - this.triggerEvent('closed'); - // 恢复样式 - this.$element.innerWidth(''); - this.$menu.css({ - 'margin-top': '', - height: '', - width: '', - }); - } - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'select', this.$native, this); - } - /** - * 切换下拉菜单的打开状态 - */ - toggle() { - this.isOpen() ? this.close() : this.open(); - } - /** - * 打开下拉菜单 - */ - open() { - if (this.isOpen()) { - return; - } - this.state = 'opening'; - this.triggerEvent('open'); - this.readjustMenu(); - this.$element.addClass('mdui-select-open'); - this.$menu.transitionEnd(() => this.transitionEnd()); - } - /** - * 关闭下拉菜单 - */ - close() { - if (!this.isOpen()) { - return; - } - this.state = 'closing'; - this.triggerEvent('close'); - this.$menu.css('overflow-y', ''); - this.$element - .removeClass('mdui-select-open') - .addClass('mdui-select-closing'); - this.$menu.transitionEnd(() => this.transitionEnd()); - } - /** - * 获取当前菜单的状态。共包含四种状态:`opening`、`opened`、`closing`、`closed` - */ - getState() { - return this.state; - } -} -mdui.Select = Select; - -const customAttr$4 = 'mdui-select'; -$(() => { - mdui.mutation(`[${customAttr$4}]`, function () { - new mdui.Select(this, parseOptions(this, customAttr$4)); - }); -}); - -$(() => { - // 滚动时隐藏应用栏 - mdui.mutation('.mdui-appbar-scroll-hide', function () { - new mdui.Headroom(this); - }); - // 滚动时只隐藏应用栏中的工具栏 - mdui.mutation('.mdui-appbar-scroll-toolbar-hide', function () { - new mdui.Headroom(this, { - pinnedClass: 'mdui-headroom-pinned-toolbar', - unpinnedClass: 'mdui-headroom-unpinned-toolbar', - }); - }); -}); - -const DEFAULT_OPTIONS$4 = { - trigger: 'click', - loop: false, -}; -class Tab { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$4); - /** - * 当前激活的 tab 的索引号。为 -1 时表示没有激活的选项卡,或不存在选项卡 - */ - this.activeIndex = -1; - this.$element = $(selector).first(); - extend(this.options, options); - this.$tabs = this.$element.children('a'); - this.$indicator = $('
').appendTo(this.$element); - // 根据 url hash 获取默认激活的选项卡 - const hash = window.location.hash; - if (hash) { - this.$tabs.each((index, tab) => { - if ($(tab).attr('href') === hash) { - this.activeIndex = index; - return false; - } - return true; - }); - } - // 含 .mdui-tab-active 的元素默认激活 - if (this.activeIndex === -1) { - this.$tabs.each((index, tab) => { - if ($(tab).hasClass('mdui-tab-active')) { - this.activeIndex = index; - return false; - } - return true; - }); - } - // 存在选项卡时,默认激活第一个选项卡 - if (this.$tabs.length && this.activeIndex === -1) { - this.activeIndex = 0; - } - // 设置激活状态选项卡 - this.setActive(); - // 监听窗口大小变化事件,调整指示器位置 - $window.on('resize', $.throttle(() => this.setIndicatorPosition(), 100)); - // 监听点击选项卡事件 - this.$tabs.each((_, tab) => { - this.bindTabEvent(tab); - }); - } - /** - * 指定选项卡是否已禁用 - * @param $tab - */ - isDisabled($tab) { - return $tab.attr('disabled') !== undefined; - } - /** - * 绑定在 Tab 上点击或悬浮的事件 - * @param tab - */ - bindTabEvent(tab) { - const $tab = $(tab); - // 点击或鼠标移入触发的事件 - const clickEvent = () => { - // 禁用状态的选项卡无法选中 - if (this.isDisabled($tab)) { - return false; - } - this.activeIndex = this.$tabs.index(tab); - this.setActive(); - }; - // 无论 trigger 是 click 还是 hover,都会响应 click 事件 - $tab.on('click', clickEvent); - // trigger 为 hover 时,额外响应 mouseenter 事件 - if (this.options.trigger === 'hover') { - $tab.on('mouseenter', clickEvent); - } - // 阻止链接的默认点击动作 - $tab.on('click', () => { - if (($tab.attr('href') || '').indexOf('#') === 0) { - return false; - } - }); - } - /** - * 触发组件事件 - * @param name - * @param $element - * @param parameters - */ - triggerEvent(name, $element, parameters = {}) { - componentEvent(name, 'tab', $element, this, parameters); - } - /** - * 设置激活状态的选项卡 - */ - setActive() { - this.$tabs.each((index, tab) => { - const $tab = $(tab); - const targetId = $tab.attr('href') || ''; - // 设置选项卡激活状态 - if (index === this.activeIndex && !this.isDisabled($tab)) { - if (!$tab.hasClass('mdui-tab-active')) { - this.triggerEvent('change', this.$element, { - index: this.activeIndex, - id: targetId.substr(1), - }); - this.triggerEvent('show', $tab); - $tab.addClass('mdui-tab-active'); - } - $(targetId).show(); - this.setIndicatorPosition(); - } - else { - $tab.removeClass('mdui-tab-active'); - $(targetId).hide(); - } - }); - } - /** - * 设置选项卡指示器的位置 - */ - setIndicatorPosition() { - // 选项卡数量为 0 时,不显示指示器 - if (this.activeIndex === -1) { - this.$indicator.css({ - left: 0, - width: 0, - }); - return; - } - const $activeTab = this.$tabs.eq(this.activeIndex); - if (this.isDisabled($activeTab)) { - return; - } - const activeTabOffset = $activeTab.offset(); - this.$indicator.css({ - left: `${activeTabOffset.left + - this.$element[0].scrollLeft - - this.$element[0].getBoundingClientRect().left}px`, - width: `${$activeTab.innerWidth()}px`, - }); - } - /** - * 切换到下一个选项卡 - */ - next() { - if (this.activeIndex === -1) { - return; - } - if (this.$tabs.length > this.activeIndex + 1) { - this.activeIndex++; - } - else if (this.options.loop) { - this.activeIndex = 0; - } - this.setActive(); - } - /** - * 切换到上一个选项卡 - */ - prev() { - if (this.activeIndex === -1) { - return; - } - if (this.activeIndex > 0) { - this.activeIndex--; - } - else if (this.options.loop) { - this.activeIndex = this.$tabs.length - 1; - } - this.setActive(); - } - /** - * 显示指定索引号、或指定id的选项卡 - * @param index 索引号、或id - */ - show(index) { - if (this.activeIndex === -1) { - return; - } - if (isNumber(index)) { - this.activeIndex = index; - } - else { - this.$tabs.each((i, tab) => { - if (tab.id === index) { - this.activeIndex === i; - return false; - } - }); - } - this.setActive(); - } - /** - * 在父元素的宽度变化时,需要调用该方法重新调整指示器位置 - * 在添加或删除选项卡时,需要调用该方法 - */ - handleUpdate() { - const $oldTabs = this.$tabs; // 旧的 tabs JQ对象 - const $newTabs = this.$element.children('a'); // 新的 tabs JQ对象 - const oldTabsElement = $oldTabs.get(); // 旧的 tabs 元素数组 - const newTabsElement = $newTabs.get(); // 新的 tabs 元素数组 - if (!$newTabs.length) { - this.activeIndex = -1; - this.$tabs = $newTabs; - this.setIndicatorPosition(); - return; - } - // 重新遍历选项卡,找出新增的选项卡 - $newTabs.each((index, tab) => { - // 有新增的选项卡 - if (oldTabsElement.indexOf(tab) < 0) { - this.bindTabEvent(tab); - if (this.activeIndex === -1) { - this.activeIndex = 0; - } - else if (index <= this.activeIndex) { - this.activeIndex++; - } - } - }); - // 找出被移除的选项卡 - $oldTabs.each((index, tab) => { - // 有被移除的选项卡 - if (newTabsElement.indexOf(tab) < 0) { - if (index < this.activeIndex) { - this.activeIndex--; - } - else if (index === this.activeIndex) { - this.activeIndex = 0; - } - } - }); - this.$tabs = $newTabs; - this.setActive(); - } -} -mdui.Tab = Tab; - -const customAttr$5 = 'mdui-tab'; -$(() => { - mdui.mutation(`[${customAttr$5}]`, function () { - new mdui.Tab(this, parseOptions(this, customAttr$5)); - }); -}); - -/** - * 在桌面设备上默认显示抽屉栏,不显示遮罩层 - * 在手机和平板设备上默认不显示抽屉栏,始终显示遮罩层,且覆盖导航栏 - */ -const DEFAULT_OPTIONS$5 = { - overlay: false, - swipe: false, -}; -class Drawer { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$5); - /** - * 当前是否显示着遮罩层 - */ - this.overlay = false; - this.$element = $(selector).first(); - extend(this.options, options); - this.position = this.$element.hasClass('mdui-drawer-right') - ? 'right' - : 'left'; - if (this.$element.hasClass('mdui-drawer-close')) { - this.state = 'closed'; - } - else if (this.$element.hasClass('mdui-drawer-open')) { - this.state = 'opened'; - } - else if (this.isDesktop()) { - this.state = 'opened'; - } - else { - this.state = 'closed'; - } - // 浏览器窗口大小调整时 - $window.on('resize', $.throttle(() => { - if (this.isDesktop()) { - // 由手机平板切换到桌面时 - // 如果显示着遮罩,则隐藏遮罩 - if (this.overlay && !this.options.overlay) { - $.hideOverlay(); - this.overlay = false; - $.unlockScreen(); - } - // 没有强制关闭,则状态为打开状态 - if (!this.$element.hasClass('mdui-drawer-close')) { - this.state = 'opened'; - } - } - else if (!this.overlay && this.state === 'opened') { - // 由桌面切换到手机平板时。如果抽屉栏是打开着的且没有遮罩层,则关闭抽屉栏 - if (this.$element.hasClass('mdui-drawer-open')) { - $.showOverlay(); - this.overlay = true; - $.lockScreen(); - $('.mdui-overlay').one('click', () => this.close()); - } - else { - this.state = 'closed'; - } - } - }, 100)); - // 绑定关闭按钮事件 - this.$element.find('[mdui-drawer-close]').each((_, close) => { - $(close).on('click', () => this.close()); - }); - this.swipeSupport(); - } - /** - * 是否是桌面设备 - */ - isDesktop() { - return $window.width() >= 1024; - } - /** - * 滑动手势支持 - */ - swipeSupport() { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - // 抽屉栏滑动手势控制 - let openNavEventHandler; - let touchStartX; - let touchStartY; - let swipeStartX; - let swiping = null; - let maybeSwiping = false; - // 手势触发的范围 - const swipeAreaWidth = 24; - function setPosition(translateX) { - const rtlTranslateMultiplier = that.position === 'right' ? -1 : 1; - const transformCSS = `translate(${-1 * rtlTranslateMultiplier * translateX}px, 0) !important;`; - const transitionCSS = 'initial !important;'; - that.$element.css('cssText', `transform: ${transformCSS}; transition: ${transitionCSS};`); - } - function cleanPosition() { - that.$element[0].style.transform = ''; - that.$element[0].style.webkitTransform = ''; - that.$element[0].style.transition = ''; - that.$element[0].style.webkitTransition = ''; - } - function getMaxTranslateX() { - return that.$element.width() + 10; - } - function getTranslateX(currentX) { - return Math.min(Math.max(swiping === 'closing' - ? swipeStartX - currentX - : getMaxTranslateX() + swipeStartX - currentX, 0), getMaxTranslateX()); - } - function onBodyTouchEnd(event) { - if (swiping) { - let touchX = event.changedTouches[0].pageX; - if (that.position === 'right') { - touchX = $body.width() - touchX; - } - const translateRatio = getTranslateX(touchX) / getMaxTranslateX(); - maybeSwiping = false; - const swipingState = swiping; - swiping = null; - if (swipingState === 'opening') { - if (translateRatio < 0.92) { - cleanPosition(); - that.open(); - } - else { - cleanPosition(); - } - } - else { - if (translateRatio > 0.08) { - cleanPosition(); - that.close(); - } - else { - cleanPosition(); - } - } - $.unlockScreen(); - } - else { - maybeSwiping = false; - } - $body.off({ - // eslint-disable-next-line @typescript-eslint/no-use-before-define - touchmove: onBodyTouchMove, - touchend: onBodyTouchEnd, - // eslint-disable-next-line @typescript-eslint/no-use-before-define - touchcancel: onBodyTouchMove, - }); - } - function onBodyTouchMove(event) { - let touchX = event.touches[0].pageX; - if (that.position === 'right') { - touchX = $body.width() - touchX; - } - const touchY = event.touches[0].pageY; - if (swiping) { - setPosition(getTranslateX(touchX)); - } - else if (maybeSwiping) { - const dXAbs = Math.abs(touchX - touchStartX); - const dYAbs = Math.abs(touchY - touchStartY); - const threshold = 8; - if (dXAbs > threshold && dYAbs <= threshold) { - swipeStartX = touchX; - swiping = that.state === 'opened' ? 'closing' : 'opening'; - $.lockScreen(); - setPosition(getTranslateX(touchX)); - } - else if (dXAbs <= threshold && dYAbs > threshold) { - onBodyTouchEnd(); - } - } - } - function onBodyTouchStart(event) { - touchStartX = event.touches[0].pageX; - if (that.position === 'right') { - touchStartX = $body.width() - touchStartX; - } - touchStartY = event.touches[0].pageY; - if (that.state !== 'opened') { - if (touchStartX > swipeAreaWidth || - openNavEventHandler !== onBodyTouchStart) { - return; - } - } - maybeSwiping = true; - $body.on({ - touchmove: onBodyTouchMove, - touchend: onBodyTouchEnd, - touchcancel: onBodyTouchMove, - }); - } - function enableSwipeHandling() { - if (!openNavEventHandler) { - $body.on('touchstart', onBodyTouchStart); - openNavEventHandler = onBodyTouchStart; - } - } - if (this.options.swipe) { - enableSwipeHandling(); - } - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'drawer', this.$element, this); - } - /** - * 动画结束回调 - */ - transitionEnd() { - if (this.$element.hasClass('mdui-drawer-open')) { - this.state = 'opened'; - this.triggerEvent('opened'); - } - else { - this.state = 'closed'; - this.triggerEvent('closed'); - } - } - /** - * 是否处于打开状态 - */ - isOpen() { - return this.state === 'opening' || this.state === 'opened'; - } - /** - * 打开抽屉栏 - */ - open() { - if (this.isOpen()) { - return; - } - this.state = 'opening'; - this.triggerEvent('open'); - if (!this.options.overlay) { - $body.addClass(`mdui-drawer-body-${this.position}`); - } - this.$element - .removeClass('mdui-drawer-close') - .addClass('mdui-drawer-open') - .transitionEnd(() => this.transitionEnd()); - if (!this.isDesktop() || this.options.overlay) { - this.overlay = true; - $.showOverlay().one('click', () => this.close()); - $.lockScreen(); - } - } - /** - * 关闭抽屉栏 - */ - close() { - if (!this.isOpen()) { - return; - } - this.state = 'closing'; - this.triggerEvent('close'); - if (!this.options.overlay) { - $body.removeClass(`mdui-drawer-body-${this.position}`); - } - this.$element - .addClass('mdui-drawer-close') - .removeClass('mdui-drawer-open') - .transitionEnd(() => this.transitionEnd()); - if (this.overlay) { - $.hideOverlay(); - this.overlay = false; - $.unlockScreen(); - } - } - /** - * 切换抽屉栏打开/关闭状态 - */ - toggle() { - this.isOpen() ? this.close() : this.open(); - } - /** - * 返回当前抽屉栏的状态。共包含四种状态:`opening`、`opened`、`closing`、`closed` - */ - getState() { - return this.state; - } -} -mdui.Drawer = Drawer; - -const customAttr$6 = 'mdui-drawer'; -$(() => { - mdui.mutation(`[${customAttr$6}]`, function () { - const $element = $(this); - const options = parseOptions(this, customAttr$6); - const selector = options.target; - delete options.target; - const $drawer = $(selector).first(); - const instance = new mdui.Drawer($drawer, options); - $element.on('click', () => instance.toggle()); - }); -}); - -const container = {}; -function queue(name, func) { - if (isUndefined(container[name])) { - container[name] = []; - } - if (isUndefined(func)) { - return container[name]; - } - container[name].push(func); -} -/** - * 从队列中移除第一个函数,并执行该函数 - * @param name 队列满 - */ -function dequeue(name) { - if (isUndefined(container[name])) { - return; - } - if (!container[name].length) { - return; - } - const func = container[name].shift(); - func(); -} - -const DEFAULT_OPTIONS$6 = { - history: true, - overlay: true, - modal: false, - closeOnEsc: true, - closeOnCancel: true, - closeOnConfirm: true, - destroyOnClosed: false, -}; -/** - * 当前显示的对话框实例 - */ -let currentInst = null; -/** - * 队列名 - */ -const queueName = '_mdui_dialog'; -/** - * 窗口是否已锁定 - */ -let isLockScreen = false; -/** - * 遮罩层元素 - */ -let $overlay; -class Dialog { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$6); - /** - * 当前 dialog 的状态 - */ - this.state = 'closed'; - /** - * dialog 元素是否是动态添加的 - */ - this.append = false; - this.$element = $(selector).first(); - // 如果对话框元素没有在当前文档中,则需要添加 - if (!contains(document.body, this.$element[0])) { - this.append = true; - $body.append(this.$element); - } - extend(this.options, options); - // 绑定取消按钮事件 - this.$element.find('[mdui-dialog-cancel]').each((_, cancel) => { - $(cancel).on('click', () => { - this.triggerEvent('cancel'); - if (this.options.closeOnCancel) { - this.close(); - } - }); - }); - // 绑定确认按钮事件 - this.$element.find('[mdui-dialog-confirm]').each((_, confirm) => { - $(confirm).on('click', () => { - this.triggerEvent('confirm'); - if (this.options.closeOnConfirm) { - this.close(); - } - }); - }); - // 绑定关闭按钮事件 - this.$element.find('[mdui-dialog-close]').each((_, close) => { - $(close).on('click', () => this.close()); - }); - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'dialog', this.$element, this); - } - /** - * 窗口宽度变化,或对话框内容变化时,调整对话框位置和对话框内的滚动条 - */ - readjust() { - if (!currentInst) { - return; - } - const $element = currentInst.$element; - const $title = $element.children('.mdui-dialog-title'); - const $content = $element.children('.mdui-dialog-content'); - const $actions = $element.children('.mdui-dialog-actions'); - // 调整 dialog 的 top 和 height 值 - $element.height(''); - $content.height(''); - const elementHeight = $element.height(); - $element.css({ - top: `${($window.height() - elementHeight) / 2}px`, - height: `${elementHeight}px`, - }); - // 调整 mdui-dialog-content 的高度 - $content.innerHeight(elementHeight - - ($title.innerHeight() || 0) - - ($actions.innerHeight() || 0)); - } - /** - * hashchange 事件触发时关闭对话框 - */ - hashchangeEvent() { - if (window.location.hash.substring(1).indexOf('mdui-dialog') < 0) { - currentInst.close(true); - } - } - /** - * 点击遮罩层关闭对话框 - * @param event - */ - overlayClick(event) { - if ($(event.target).hasClass('mdui-overlay') && - currentInst) { - currentInst.close(); - } - } - /** - * 动画结束回调 - */ - transitionEnd() { - if (this.$element.hasClass('mdui-dialog-open')) { - this.state = 'opened'; - this.triggerEvent('opened'); - } - else { - this.state = 'closed'; - this.triggerEvent('closed'); - this.$element.hide(); - // 所有对话框都关闭,且当前没有打开的对话框时,解锁屏幕 - if (!queue(queueName).length && !currentInst && isLockScreen) { - $.unlockScreen(); - isLockScreen = false; - } - $window.off('resize', $.throttle(this.readjust, 100)); - if (this.options.destroyOnClosed) { - this.destroy(); - } - } - } - /** - * 打开指定对话框 - */ - doOpen() { - currentInst = this; - if (!isLockScreen) { - $.lockScreen(); - isLockScreen = true; - } - this.$element.show(); - this.readjust(); - $window.on('resize', $.throttle(this.readjust, 100)); - // 打开消息框 - this.state = 'opening'; - this.triggerEvent('open'); - this.$element - .addClass('mdui-dialog-open') - .transitionEnd(() => this.transitionEnd()); - // 不存在遮罩层元素时,添加遮罩层 - if (!$overlay) { - $overlay = $.showOverlay(5100); - } - // 点击遮罩层时是否关闭对话框 - if (this.options.modal) { - $overlay.off('click', this.overlayClick); - } - else { - $overlay.on('click', this.overlayClick); - } - // 是否显示遮罩层,不显示时,把遮罩层背景透明 - $overlay.css('opacity', this.options.overlay ? '' : 0); - if (this.options.history) { - // 如果 hash 中原来就有 mdui-dialog,先删除,避免后退历史纪录后仍然有 mdui-dialog 导致无法关闭 - // 包括 mdui-dialog 和 &mdui-dialog 和 ?mdui-dialog - let hash = window.location.hash.substring(1); - if (hash.indexOf('mdui-dialog') > -1) { - hash = hash.replace(/[&?]?mdui-dialog/g, ''); - } - // 后退按钮关闭对话框 - if (hash) { - window.location.hash = `${hash}${hash.indexOf('?') > -1 ? '&' : '?'}mdui-dialog`; - } - else { - window.location.hash = 'mdui-dialog'; - } - $window.on('hashchange', this.hashchangeEvent); - } - } - /** - * 当前对话框是否为打开状态 - */ - isOpen() { - return this.state === 'opening' || this.state === 'opened'; - } - /** - * 打开对话框 - */ - open() { - if (this.isOpen()) { - return; - } - // 如果当前有正在打开或已经打开的对话框,或队列不为空,则先加入队列,等旧对话框开始关闭时再打开 - if ((currentInst && - (currentInst.state === 'opening' || currentInst.state === 'opened')) || - queue(queueName).length) { - queue(queueName, () => this.doOpen()); - return; - } - this.doOpen(); - } - /** - * 关闭对话框 - */ - close(historyBack = false) { - // historyBack 是否需要后退历史纪录,默认为 `false`。该参数仅内部使用 - // 为 `false` 时是通过 js 关闭,需要后退一个历史记录 - // 为 `true` 时是通过后退按钮关闭,不需要后退历史记录 - // setTimeout 的作用是: - // 当同时关闭一个对话框,并打开另一个对话框时,使打开对话框的操作先执行,以使需要打开的对话框先加入队列 - setTimeout(() => { - if (!this.isOpen()) { - return; - } - currentInst = null; - this.state = 'closing'; - this.triggerEvent('close'); - // 所有对话框都关闭,且当前没有打开的对话框时,隐藏遮罩 - if (!queue(queueName).length && $overlay) { - $.hideOverlay(); - $overlay = null; - // 若仍存在遮罩,恢复遮罩的 z-index - $('.mdui-overlay').css('z-index', 2000); - } - this.$element - .removeClass('mdui-dialog-open') - .transitionEnd(() => this.transitionEnd()); - if (this.options.history && !queue(queueName).length) { - if (!historyBack) { - window.history.back(); - } - $window.off('hashchange', this.hashchangeEvent); - } - // 关闭旧对话框,打开新对话框。 - // 加一点延迟,仅仅为了视觉效果更好。不加延时也不影响功能 - setTimeout(() => { - dequeue(queueName); - }, 100); - }); - } - /** - * 切换对话框打开/关闭状态 - */ - toggle() { - this.isOpen() ? this.close() : this.open(); - } - /** - * 获取对话框状态。共包含四种状态:`opening`、`opened`、`closing`、`closed` - */ - getState() { - return this.state; - } - /** - * 销毁对话框 - */ - destroy() { - if (this.append) { - this.$element.remove(); - } - if (!queue(queueName).length && !currentInst) { - if ($overlay) { - $.hideOverlay(); - $overlay = null; - } - if (isLockScreen) { - $.unlockScreen(); - isLockScreen = false; - } - } - } - /** - * 对话框内容变化时,需要调用该方法来调整对话框位置和滚动条高度 - */ - handleUpdate() { - this.readjust(); - } -} - -// esc 按下时关闭对话框 -$document.on('keydown', (event) => { - if (currentInst && - currentInst.options.closeOnEsc && - currentInst.state === 'opened' && - event.keyCode === 27) { - currentInst.close(); - } -}); -mdui.Dialog = Dialog; - -const customAttr$7 = 'mdui-dialog'; -const dataName$1 = '_mdui_dialog'; -$(() => { - $document.on('click', `[${customAttr$7}]`, function () { - const options = parseOptions(this, customAttr$7); - const selector = options.target; - delete options.target; - const $dialog = $(selector).first(); - let instance = $dialog.data(dataName$1); - if (!instance) { - instance = new mdui.Dialog($dialog, options); - $dialog.data(dataName$1, instance); - } - instance.open(); - }); -}); - -const DEFAULT_BUTTON = { - text: '', - bold: false, - close: true, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick: () => { }, -}; -const DEFAULT_OPTIONS$7 = { - title: '', - content: '', - buttons: [], - stackedButtons: false, - cssClass: '', - history: true, - overlay: true, - modal: false, - closeOnEsc: true, - destroyOnClosed: true, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onOpen: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onOpened: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onClose: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onClosed: () => { }, -}; -mdui.dialog = function (options) { - var _a, _b; - // 合并配置参数 - options = extend({}, DEFAULT_OPTIONS$7, options); - each(options.buttons, (i, button) => { - options.buttons[i] = extend({}, DEFAULT_BUTTON, button); - }); - // 按钮的 HTML - let buttonsHTML = ''; - if ((_a = options.buttons) === null || _a === void 0 ? void 0 : _a.length) { - buttonsHTML = `
`; - each(options.buttons, (_, button) => { - buttonsHTML += - '${button.text}`; - }); - buttonsHTML += '
'; - } - // Dialog 的 HTML - const HTML = `
` + - (options.title - ? `
${options.title}
` - : '') + - (options.content - ? `
${options.content}
` - : '') + - buttonsHTML + - '
'; - // 实例化 Dialog - const instance = new mdui.Dialog(HTML, { - history: options.history, - overlay: options.overlay, - modal: options.modal, - closeOnEsc: options.closeOnEsc, - destroyOnClosed: options.destroyOnClosed, - }); - // 绑定按钮事件 - if ((_b = options.buttons) === null || _b === void 0 ? void 0 : _b.length) { - instance.$element - .find('.mdui-dialog-actions .mdui-btn') - .each((index, button) => { - $(button).on('click', () => { - options.buttons[index].onClick(instance); - if (options.buttons[index].close) { - instance.close(); - } - }); - }); - } - // 绑定打开关闭事件 - instance.$element - .on('open.mdui.dialog', () => { - options.onOpen(instance); - }) - .on('opened.mdui.dialog', () => { - options.onOpened(instance); - }) - .on('close.mdui.dialog', () => { - options.onClose(instance); - }) - .on('closed.mdui.dialog', () => { - options.onClosed(instance); - }); - instance.open(); - return instance; -}; - -const DEFAULT_OPTIONS$8 = { - confirmText: 'ok', - history: true, - modal: false, - closeOnEsc: true, - closeOnConfirm: true, -}; -mdui.alert = function (text, title, onConfirm, options) { - if (isFunction(title)) { - options = onConfirm; - onConfirm = title; - title = ''; - } - if (isUndefined(onConfirm)) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - onConfirm = () => { }; - } - if (isUndefined(options)) { - options = {}; - } - options = extend({}, DEFAULT_OPTIONS$8, options); - return mdui.dialog({ - title: title, - content: text, - buttons: [ - { - text: options.confirmText, - bold: false, - close: options.closeOnConfirm, - onClick: onConfirm, - }, - ], - cssClass: 'mdui-dialog-alert', - history: options.history, - modal: options.modal, - closeOnEsc: options.closeOnEsc, - }); -}; - -const DEFAULT_OPTIONS$9 = { - confirmText: 'ok', - cancelText: 'cancel', - history: true, - modal: false, - closeOnEsc: true, - closeOnCancel: true, - closeOnConfirm: true, -}; -mdui.confirm = function (text, title, onConfirm, onCancel, options) { - if (isFunction(title)) { - options = onCancel; - onCancel = onConfirm; - onConfirm = title; - title = ''; - } - if (isUndefined(onConfirm)) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - onConfirm = () => { }; - } - if (isUndefined(onCancel)) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - onCancel = () => { }; - } - if (isUndefined(options)) { - options = {}; - } - options = extend({}, DEFAULT_OPTIONS$9, options); - return mdui.dialog({ - title: title, - content: text, - buttons: [ - { - text: options.cancelText, - bold: false, - close: options.closeOnCancel, - onClick: onCancel, - }, - { - text: options.confirmText, - bold: false, - close: options.closeOnConfirm, - onClick: onConfirm, - }, - ], - cssClass: 'mdui-dialog-confirm', - history: options.history, - modal: options.modal, - closeOnEsc: options.closeOnEsc, - }); -}; - -const DEFAULT_OPTIONS$a = { - confirmText: 'ok', - cancelText: 'cancel', - history: true, - modal: false, - closeOnEsc: true, - closeOnCancel: true, - closeOnConfirm: true, - type: 'text', - maxlength: 0, - defaultValue: '', - confirmOnEnter: false, -}; -mdui.prompt = function (label, title, onConfirm, onCancel, options) { - if (isFunction(title)) { - options = onCancel; - onCancel = onConfirm; - onConfirm = title; - title = ''; - } - if (isUndefined(onConfirm)) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - onConfirm = () => { }; - } - if (isUndefined(onCancel)) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - onCancel = () => { }; - } - if (isUndefined(options)) { - options = {}; - } - options = extend({}, DEFAULT_OPTIONS$a, options); - const content = '
' + - (label ? `` : '') + - (options.type === 'text' - ? `` - : '') + - (options.type === 'textarea' - ? `` - : '') + - '
'; - const onCancelClick = (dialog) => { - const value = dialog.$element.find('.mdui-textfield-input').val(); - onCancel(value, dialog); - }; - const onConfirmClick = (dialog) => { - const value = dialog.$element.find('.mdui-textfield-input').val(); - onConfirm(value, dialog); - }; - return mdui.dialog({ - title, - content, - buttons: [ - { - text: options.cancelText, - bold: false, - close: options.closeOnCancel, - onClick: onCancelClick, - }, - { - text: options.confirmText, - bold: false, - close: options.closeOnConfirm, - onClick: onConfirmClick, - }, - ], - cssClass: 'mdui-dialog-prompt', - history: options.history, - modal: options.modal, - closeOnEsc: options.closeOnEsc, - onOpen: (dialog) => { - // 初始化输入框 - const $input = dialog.$element.find('.mdui-textfield-input'); - mdui.updateTextFields($input); - // 聚焦到输入框 - $input[0].focus(); - // 捕捉文本框回车键,在单行文本框的情况下触发回调 - if (options.type !== 'textarea' && options.confirmOnEnter === true) { - $input.on('keydown', (event) => { - if (event.keyCode === 13) { - const value = dialog.$element.find('.mdui-textfield-input').val(); - onConfirm(value, dialog); - if (options.closeOnConfirm) { - dialog.close(); - } - return false; - } - return; - }); - } - // 如果是多行输入框,监听输入框的 input 事件,更新对话框高度 - if (options.type === 'textarea') { - $input.on('input', () => dialog.handleUpdate()); - } - // 有字符数限制时,加载完文本框后 DOM 会变化,需要更新对话框高度 - if (options.maxlength) { - dialog.handleUpdate(); - } - }, - }); -}; - -const DEFAULT_OPTIONS$b = { - position: 'auto', - delay: 0, - content: '', -}; -class Tooltip { - constructor(selector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$b); - /** - * 当前 tooltip 的状态 - */ - this.state = 'closed'; - /** - * setTimeout 的返回值 - */ - this.timeoutId = null; - this.$target = $(selector).first(); - extend(this.options, options); - // 创建 Tooltip HTML - this.$element = $(`
${this.options.content}
`).appendTo(document.body); - // 绑定事件。元素处于 disabled 状态时无法触发鼠标事件,为了统一,把 touch 事件也禁用 - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - this.$target - .on('touchstart mouseenter', function (event) { - if (that.isDisabled(this)) { - return; - } - if (!isAllow(event)) { - return; - } - register(event); - that.open(); - }) - .on('touchend mouseleave', function (event) { - if (that.isDisabled(this)) { - return; - } - if (!isAllow(event)) { - return; - } - that.close(); - }) - .on(unlockEvent, function (event) { - if (that.isDisabled(this)) { - return; - } - register(event); - }); - } - /** - * 元素是否已禁用 - * @param element - */ - isDisabled(element) { - return (element.disabled || - $(element).attr('disabled') !== undefined); - } - /** - * 是否是桌面设备 - */ - isDesktop() { - return $window.width() > 1024; - } - /** - * 设置 Tooltip 的位置 - */ - setPosition() { - let marginLeft; - let marginTop; - // 触发的元素 - const targetProps = this.$target[0].getBoundingClientRect(); - // 触发的元素和 Tooltip 之间的距离 - const targetMargin = this.isDesktop() ? 14 : 24; - // Tooltip 的宽度和高度 - const tooltipWidth = this.$element[0].offsetWidth; - const tooltipHeight = this.$element[0].offsetHeight; - // Tooltip 的方向 - let position = this.options.position; - // 自动判断位置,加 2px,使 Tooltip 距离窗口边框至少有 2px 的间距 - if (position === 'auto') { - if (targetProps.top + - targetProps.height + - targetMargin + - tooltipHeight + - 2 < - $window.height()) { - position = 'bottom'; - } - else if (targetMargin + tooltipHeight + 2 < targetProps.top) { - position = 'top'; - } - else if (targetMargin + tooltipWidth + 2 < targetProps.left) { - position = 'left'; - } - else if (targetProps.width + targetMargin + tooltipWidth + 2 < - $window.width() - targetProps.left) { - position = 'right'; - } - else { - position = 'bottom'; - } - } - // 设置位置 - switch (position) { - case 'bottom': - marginLeft = -1 * (tooltipWidth / 2); - marginTop = targetProps.height / 2 + targetMargin; - this.$element.transformOrigin('top center'); - break; - case 'top': - marginLeft = -1 * (tooltipWidth / 2); - marginTop = - -1 * (tooltipHeight + targetProps.height / 2 + targetMargin); - this.$element.transformOrigin('bottom center'); - break; - case 'left': - marginLeft = -1 * (tooltipWidth + targetProps.width / 2 + targetMargin); - marginTop = -1 * (tooltipHeight / 2); - this.$element.transformOrigin('center right'); - break; - case 'right': - marginLeft = targetProps.width / 2 + targetMargin; - marginTop = -1 * (tooltipHeight / 2); - this.$element.transformOrigin('center left'); - break; - } - const targetOffset = this.$target.offset(); - this.$element.css({ - top: `${targetOffset.top + targetProps.height / 2}px`, - left: `${targetOffset.left + targetProps.width / 2}px`, - 'margin-left': `${marginLeft}px`, - 'margin-top': `${marginTop}px`, - }); - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'tooltip', this.$target, this); - } - /** - * 动画结束回调 - */ - transitionEnd() { - if (this.$element.hasClass('mdui-tooltip-open')) { - this.state = 'opened'; - this.triggerEvent('opened'); - } - else { - this.state = 'closed'; - this.triggerEvent('closed'); - } - } - /** - * 当前 tooltip 是否为打开状态 - */ - isOpen() { - return this.state === 'opening' || this.state === 'opened'; - } - /** - * 执行打开 tooltip - */ - doOpen() { - this.state = 'opening'; - this.triggerEvent('open'); - this.$element - .addClass('mdui-tooltip-open') - .transitionEnd(() => this.transitionEnd()); - } - /** - * 打开 Tooltip - * @param options 允许每次打开时设置不同的参数 - */ - open(options) { - if (this.isOpen()) { - return; - } - const oldOptions = extend({}, this.options); - if (options) { - extend(this.options, options); - } - // tooltip 的内容有更新 - if (oldOptions.content !== this.options.content) { - this.$element.html(this.options.content); - } - this.setPosition(); - if (this.options.delay) { - this.timeoutId = setTimeout(() => this.doOpen(), this.options.delay); - } - else { - this.timeoutId = null; - this.doOpen(); - } - } - /** - * 关闭 Tooltip - */ - close() { - if (this.timeoutId) { - clearTimeout(this.timeoutId); - this.timeoutId = null; - } - if (!this.isOpen()) { - return; - } - this.state = 'closing'; - this.triggerEvent('close'); - this.$element - .removeClass('mdui-tooltip-open') - .transitionEnd(() => this.transitionEnd()); - } - /** - * 切换 Tooltip 的打开状态 - */ - toggle() { - this.isOpen() ? this.close() : this.open(); - } - /** - * 获取 Tooltip 状态。共包含四种状态:`opening`、`opened`、`closing`、`closed` - */ - getState() { - return this.state; - } -} -mdui.Tooltip = Tooltip; - -const customAttr$8 = 'mdui-tooltip'; -const dataName$2 = '_mdui_tooltip'; -$(() => { - // mouseenter 不能冒泡,所以这里用 mouseover 代替 - $document.on('touchstart mouseover', `[${customAttr$8}]`, function () { - const $target = $(this); - let instance = $target.data(dataName$2); - if (!instance) { - instance = new mdui.Tooltip(this, parseOptions(this, customAttr$8)); - $target.data(dataName$2, instance); - } - }); -}); - -const DEFAULT_OPTIONS$c = { - message: '', - timeout: 4000, - position: 'bottom', - buttonText: '', - buttonColor: '', - closeOnButtonClick: true, - closeOnOutsideClick: true, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onClick: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onButtonClick: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onOpen: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onOpened: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onClose: () => { }, - // eslint-disable-next-line @typescript-eslint/no-empty-function - onClosed: () => { }, -}; -/** - * 当前打开着的 Snackbar - */ -let currentInst$1 = null; -/** - * 队列名 - */ -const queueName$1 = '_mdui_snackbar'; -class Snackbar { - constructor(options) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$c); - /** - * 当前 Snackbar 的状态 - */ - this.state = 'closed'; - /** - * setTimeout 的 ID - */ - this.timeoutId = null; - extend(this.options, options); - // 按钮颜色 - let buttonColorStyle = ''; - let buttonColorClass = ''; - if (this.options.buttonColor.indexOf('#') === 0 || - this.options.buttonColor.indexOf('rgb') === 0) { - buttonColorStyle = `style="color:${this.options.buttonColor}"`; - } - else if (this.options.buttonColor !== '') { - buttonColorClass = `mdui-text-color-${this.options.buttonColor}`; - } - // 添加 HTML - this.$element = $('
' + - `
${this.options.message}
` + - (this.options.buttonText - ? `${this.options.buttonText}` - : '') + - '
').appendTo(document.body); - // 设置位置 - this.setPosition('close'); - this.$element.reflow().addClass(`mdui-snackbar-${this.options.position}`); - } - /** - * 点击 Snackbar 外面的区域关闭 - * @param event - */ - closeOnOutsideClick(event) { - const $target = $(event.target); - if (!$target.hasClass('mdui-snackbar') && - !$target.parents('.mdui-snackbar').length) { - currentInst$1.close(); - } - } - /** - * 设置 Snackbar 的位置 - * @param state - */ - setPosition(state) { - const snackbarHeight = this.$element[0].clientHeight; - const position = this.options.position; - let translateX; - let translateY; - // translateX - if (position === 'bottom' || position === 'top') { - translateX = '-50%'; - } - else { - translateX = '0'; - } - // translateY - if (state === 'open') { - translateY = '0'; - } - else { - if (position === 'bottom') { - translateY = snackbarHeight; - } - if (position === 'top') { - translateY = -snackbarHeight; - } - if (position === 'left-top' || position === 'right-top') { - translateY = -snackbarHeight - 24; - } - if (position === 'left-bottom' || position === 'right-bottom') { - translateY = snackbarHeight + 24; - } - } - this.$element.transform(`translate(${translateX},${translateY}px`); - } - /** - * 打开 Snackbar - */ - open() { - if (this.state === 'opening' || this.state === 'opened') { - return; - } - // 如果当前有正在显示的 Snackbar,则先加入队列,等旧 Snackbar 关闭后再打开 - if (currentInst$1) { - queue(queueName$1, () => this.open()); - return; - } - currentInst$1 = this; - // 开始打开 - this.state = 'opening'; - this.options.onOpen(this); - this.setPosition('open'); - this.$element.transitionEnd(() => { - if (this.state !== 'opening') { - return; - } - this.state = 'opened'; - this.options.onOpened(this); - // 有按钮时绑定事件 - if (this.options.buttonText) { - this.$element.find('.mdui-snackbar-action').on('click', () => { - this.options.onButtonClick(this); - if (this.options.closeOnButtonClick) { - this.close(); - } - }); - } - // 点击 snackbar 的事件 - this.$element.on('click', (event) => { - if (!$(event.target).hasClass('mdui-snackbar-action')) { - this.options.onClick(this); - } - }); - // 点击 Snackbar 外面的区域关闭 - if (this.options.closeOnOutsideClick) { - $document.on(startEvent, this.closeOnOutsideClick); - } - // 超时后自动关闭 - if (this.options.timeout) { - this.timeoutId = setTimeout(() => this.close(), this.options.timeout); - } - }); - } - /** - * 关闭 Snackbar - */ - close() { - if (this.state === 'closing' || this.state === 'closed') { - return; - } - if (this.timeoutId) { - clearTimeout(this.timeoutId); - } - if (this.options.closeOnOutsideClick) { - $document.off(startEvent, this.closeOnOutsideClick); - } - this.state = 'closing'; - this.options.onClose(this); - this.setPosition('close'); - this.$element.transitionEnd(() => { - if (this.state !== 'closing') { - return; - } - currentInst$1 = null; - this.state = 'closed'; - this.options.onClosed(this); - this.$element.remove(); - dequeue(queueName$1); - }); - } -} -mdui.snackbar = function (message, options = {}) { - if (isString(message)) { - options.message = message; - } - else { - options = message; - } - const instance = new Snackbar(options); - instance.open(); - return instance; -}; - -$(() => { - // 切换导航项 - $document.on('click', '.mdui-bottom-nav>a', function () { - const $item = $(this); - const $bottomNav = $item.parent(); - $bottomNav.children('a').each((index, item) => { - const isThis = $item.is(item); - if (isThis) { - componentEvent('change', 'bottomNav', $bottomNav[0], undefined, { - index, - }); - } - isThis - ? $(item).addClass('mdui-bottom-nav-active') - : $(item).removeClass('mdui-bottom-nav-active'); - }); - }); - // 滚动时隐藏 mdui-bottom-nav-scroll-hide - mdui.mutation('.mdui-bottom-nav-scroll-hide', function () { - new mdui.Headroom(this, { - pinnedClass: 'mdui-headroom-pinned-down', - unpinnedClass: 'mdui-headroom-unpinned-down', - }); - }); -}); - -/** - * layer 的 HTML 结构 - * @param index - */ -function layerHTML(index = false) { - return (`
` + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
'); -} -/** - * 填充 HTML - * @param spinner - */ -function fillHTML(spinner) { - const $spinner = $(spinner); - const layer = $spinner.hasClass('mdui-spinner-colorful') - ? layerHTML(1) + layerHTML(2) + layerHTML(3) + layerHTML(4) - : layerHTML(); - $spinner.html(layer); -} -$(() => { - // 页面加载完后自动填充 HTML 结构 - mdui.mutation('.mdui-spinner', function () { - fillHTML(this); - }); -}); -mdui.updateSpinners = function (selector) { - const $elements = isUndefined(selector) ? $('.mdui-spinner') : $(selector); - $elements.each(function () { - fillHTML(this); - }); -}; - -const DEFAULT_OPTIONS$d = { - position: 'auto', - align: 'auto', - gutter: 16, - fixed: false, - covered: 'auto', - subMenuTrigger: 'hover', - subMenuDelay: 200, -}; -class Menu { - constructor(anchorSelector, menuSelector, options = {}) { - /** - * 配置参数 - */ - this.options = extend({}, DEFAULT_OPTIONS$d); - /** - * 当前菜单状态 - */ - this.state = 'closed'; - this.$anchor = $(anchorSelector).first(); - this.$element = $(menuSelector).first(); - // 触发菜单的元素 和 菜单必须是同级的元素,否则菜单可能不能定位 - if (!this.$anchor.parent().is(this.$element.parent())) { - throw new Error('anchorSelector and menuSelector must be siblings'); - } - extend(this.options, options); - // 是否是级联菜单 - this.isCascade = this.$element.hasClass('mdui-menu-cascade'); - // covered 参数处理 - this.isCovered = - this.options.covered === 'auto' ? !this.isCascade : this.options.covered; - // 点击触发菜单切换 - this.$anchor.on('click', () => this.toggle()); - // 点击菜单外面区域关闭菜单 - $document.on('click touchstart', (event) => { - const $target = $(event.target); - if (this.isOpen() && - !$target.is(this.$element) && - !contains(this.$element[0], $target[0]) && - !$target.is(this.$anchor) && - !contains(this.$anchor[0], $target[0])) { - this.close(); - } - }); - // 点击不含子菜单的菜单条目关闭菜单 - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - $document.on('click', '.mdui-menu-item', function () { - const $item = $(this); - if (!$item.find('.mdui-menu').length && - $item.attr('disabled') === undefined) { - that.close(); - } - }); - // 绑定点击或鼠标移入含子菜单的条目的事件 - this.bindSubMenuEvent(); - // 窗口大小变化时,重新调整菜单位置 - $window.on('resize', $.throttle(() => this.readjust(), 100)); - } - /** - * 是否为打开状态 - */ - isOpen() { - return this.state === 'opening' || this.state === 'opened'; - } - /** - * 触发组件事件 - * @param name - */ - triggerEvent(name) { - componentEvent(name, 'menu', this.$element, this); - } - /** - * 调整主菜单位置 - */ - readjust() { - let menuLeft; - let menuTop; - // 菜单位置和方向 - let position; - let align; - // window 窗口的宽度和高度 - const windowHeight = $window.height(); - const windowWidth = $window.width(); - // 配置参数 - const gutter = this.options.gutter; - const isCovered = this.isCovered; - const isFixed = this.options.fixed; - // 动画方向参数 - let transformOriginX; - let transformOriginY; - // 菜单的原始宽度和高度 - const menuWidth = this.$element.width(); - const menuHeight = this.$element.height(); - // 触发菜单的元素在窗口中的位置 - const anchorRect = this.$anchor[0].getBoundingClientRect(); - const anchorTop = anchorRect.top; - const anchorLeft = anchorRect.left; - const anchorHeight = anchorRect.height; - const anchorWidth = anchorRect.width; - const anchorBottom = windowHeight - anchorTop - anchorHeight; - const anchorRight = windowWidth - anchorLeft - anchorWidth; - // 触发元素相对其拥有定位属性的父元素的位置 - const anchorOffsetTop = this.$anchor[0].offsetTop; - const anchorOffsetLeft = this.$anchor[0].offsetLeft; - // 自动判断菜单位置 - if (this.options.position === 'auto') { - if (anchorBottom + (isCovered ? anchorHeight : 0) > menuHeight + gutter) { - // 判断下方是否放得下菜单 - position = 'bottom'; - } - else if (anchorTop + (isCovered ? anchorHeight : 0) > - menuHeight + gutter) { - // 判断上方是否放得下菜单 - position = 'top'; - } - else { - // 上下都放不下,居中显示 - position = 'center'; - } - } - else { - position = this.options.position; - } - // 自动判断菜单对齐方式 - if (this.options.align === 'auto') { - if (anchorRight + anchorWidth > menuWidth + gutter) { - // 判断右侧是否放得下菜单 - align = 'left'; - } - else if (anchorLeft + anchorWidth > menuWidth + gutter) { - // 判断左侧是否放得下菜单 - align = 'right'; - } - else { - // 左右都放不下,居中显示 - align = 'center'; - } - } - else { - align = this.options.align; - } - // 设置菜单位置 - if (position === 'bottom') { - transformOriginY = '0'; - menuTop = - (isCovered ? 0 : anchorHeight) + - (isFixed ? anchorTop : anchorOffsetTop); - } - else if (position === 'top') { - transformOriginY = '100%'; - menuTop = - (isCovered ? anchorHeight : 0) + - (isFixed ? anchorTop - menuHeight : anchorOffsetTop - menuHeight); - } - else { - transformOriginY = '50%'; - // =====================在窗口中居中 - // 显示的菜单的高度,简单菜单高度不超过窗口高度,若超过了则在菜单内部显示滚动条 - // 级联菜单内部不允许出现滚动条 - let menuHeightTemp = menuHeight; - // 简单菜单比窗口高时,限制菜单高度 - if (!this.isCascade) { - if (menuHeight + gutter * 2 > windowHeight) { - menuHeightTemp = windowHeight - gutter * 2; - this.$element.height(menuHeightTemp); - } - } - menuTop = - (windowHeight - menuHeightTemp) / 2 + - (isFixed ? 0 : anchorOffsetTop - anchorTop); - } - this.$element.css('top', `${menuTop}px`); - // 设置菜单对齐方式 - if (align === 'left') { - transformOriginX = '0'; - menuLeft = isFixed ? anchorLeft : anchorOffsetLeft; - } - else if (align === 'right') { - transformOriginX = '100%'; - menuLeft = isFixed - ? anchorLeft + anchorWidth - menuWidth - : anchorOffsetLeft + anchorWidth - menuWidth; - } - else { - transformOriginX = '50%'; - //=======================在窗口中居中 - // 显示的菜单的宽度,菜单宽度不能超过窗口宽度 - let menuWidthTemp = menuWidth; - // 菜单比窗口宽,限制菜单宽度 - if (menuWidth + gutter * 2 > windowWidth) { - menuWidthTemp = windowWidth - gutter * 2; - this.$element.width(menuWidthTemp); - } - menuLeft = - (windowWidth - menuWidthTemp) / 2 + - (isFixed ? 0 : anchorOffsetLeft - anchorLeft); - } - this.$element.css('left', `${menuLeft}px`); - // 设置菜单动画方向 - this.$element.transformOrigin(`${transformOriginX} ${transformOriginY}`); - } - /** - * 调整子菜单的位置 - * @param $submenu - */ - readjustSubmenu($submenu) { - const $item = $submenu.parent('.mdui-menu-item'); - let submenuTop; - let submenuLeft; - // 子菜单位置和方向 - let position; - let align; - // window 窗口的宽度和高度 - const windowHeight = $window.height(); - const windowWidth = $window.width(); - // 动画方向参数 - let transformOriginX; - let transformOriginY; - // 子菜单的原始宽度和高度 - const submenuWidth = $submenu.width(); - const submenuHeight = $submenu.height(); - // 触发子菜单的菜单项的宽度高度 - const itemRect = $item[0].getBoundingClientRect(); - const itemWidth = itemRect.width; - const itemHeight = itemRect.height; - const itemLeft = itemRect.left; - const itemTop = itemRect.top; - // 判断菜单上下位置 - if (windowHeight - itemTop > submenuHeight) { - // 判断下方是否放得下菜单 - position = 'bottom'; - } - else if (itemTop + itemHeight > submenuHeight) { - // 判断上方是否放得下菜单 - position = 'top'; - } - else { - // 默认放在下方 - position = 'bottom'; - } - // 判断菜单左右位置 - if (windowWidth - itemLeft - itemWidth > submenuWidth) { - // 判断右侧是否放得下菜单 - align = 'left'; - } - else if (itemLeft > submenuWidth) { - // 判断左侧是否放得下菜单 - align = 'right'; - } - else { - // 默认放在右侧 - align = 'left'; - } - // 设置菜单位置 - if (position === 'bottom') { - transformOriginY = '0'; - submenuTop = '0'; - } - else if (position === 'top') { - transformOriginY = '100%'; - submenuTop = -submenuHeight + itemHeight; - } - $submenu.css('top', `${submenuTop}px`); - // 设置菜单对齐方式 - if (align === 'left') { - transformOriginX = '0'; - submenuLeft = itemWidth; - } - else if (align === 'right') { - transformOriginX = '100%'; - submenuLeft = -submenuWidth; - } - $submenu.css('left', `${submenuLeft}px`); - // 设置菜单动画方向 - $submenu.transformOrigin(`${transformOriginX} ${transformOriginY}`); - } - /** - * 打开子菜单 - * @param $submenu - */ - openSubMenu($submenu) { - this.readjustSubmenu($submenu); - $submenu - .addClass('mdui-menu-open') - .parent('.mdui-menu-item') - .addClass('mdui-menu-item-active'); - } - /** - * 关闭子菜单,及其嵌套的子菜单 - * @param $submenu - */ - closeSubMenu($submenu) { - // 关闭子菜单 - $submenu - .removeClass('mdui-menu-open') - .addClass('mdui-menu-closing') - .transitionEnd(() => $submenu.removeClass('mdui-menu-closing')) - // 移除激活状态的样式 - .parent('.mdui-menu-item') - .removeClass('mdui-menu-item-active'); - // 循环关闭嵌套的子菜单 - $submenu.find('.mdui-menu').each((_, menu) => { - const $subSubmenu = $(menu); - $subSubmenu - .removeClass('mdui-menu-open') - .addClass('mdui-menu-closing') - .transitionEnd(() => $subSubmenu.removeClass('mdui-menu-closing')) - .parent('.mdui-menu-item') - .removeClass('mdui-menu-item-active'); - }); - } - /** - * 切换子菜单状态 - * @param $submenu - */ - toggleSubMenu($submenu) { - $submenu.hasClass('mdui-menu-open') - ? this.closeSubMenu($submenu) - : this.openSubMenu($submenu); - } - /** - * 绑定子菜单事件 - */ - bindSubMenuEvent() { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - // 点击打开子菜单 - this.$element.on('click', '.mdui-menu-item', function (event) { - const $item = $(this); - const $target = $(event.target); - // 禁用状态菜单不操作 - if ($item.attr('disabled') !== undefined) { - return; - } - // 没有点击在子菜单的菜单项上时,不操作(点在了子菜单的空白区域、或分隔线上) - if ($target.is('.mdui-menu') || $target.is('.mdui-divider')) { - return; - } - // 阻止冒泡,点击菜单项时只在最后一级的 mdui-menu-item 上生效,不向上冒泡 - if (!$target.parents('.mdui-menu-item').first().is($item)) { - return; - } - // 当前菜单的子菜单 - const $submenu = $item.children('.mdui-menu'); - // 先关闭除当前子菜单外的所有同级子菜单 - $item - .parent('.mdui-menu') - .children('.mdui-menu-item') - .each((_, item) => { - const $tmpSubmenu = $(item).children('.mdui-menu'); - if ($tmpSubmenu.length && - (!$submenu.length || !$tmpSubmenu.is($submenu))) { - that.closeSubMenu($tmpSubmenu); - } - }); - // 切换当前子菜单 - if ($submenu.length) { - that.toggleSubMenu($submenu); - } - }); - if (this.options.subMenuTrigger === 'hover') { - // 临时存储 setTimeout 对象 - let timeout = null; - let timeoutOpen = null; - this.$element.on('mouseover mouseout', '.mdui-menu-item', function (event) { - const $item = $(this); - const eventType = event.type; - const $relatedTarget = $(event.relatedTarget); - // 禁用状态的菜单不操作 - if ($item.attr('disabled') !== undefined) { - return; - } - // 用 mouseover 模拟 mouseenter - if (eventType === 'mouseover') { - if (!$item.is($relatedTarget) && - contains($item[0], $relatedTarget[0])) { - return; - } - } - // 用 mouseout 模拟 mouseleave - else if (eventType === 'mouseout') { - if ($item.is($relatedTarget) || - contains($item[0], $relatedTarget[0])) { - return; - } - } - // 当前菜单项下的子菜单,未必存在 - const $submenu = $item.children('.mdui-menu'); - // 鼠标移入菜单项时,显示菜单项下的子菜单 - if (eventType === 'mouseover') { - if ($submenu.length) { - // 当前子菜单准备打开时,如果当前子菜单正准备着关闭,不用再关闭了 - const tmpClose = $submenu.data('timeoutClose.mdui.menu'); - if (tmpClose) { - clearTimeout(tmpClose); - } - // 如果当前子菜单已经打开,不操作 - if ($submenu.hasClass('mdui-menu-open')) { - return; - } - // 当前子菜单准备打开时,其他准备打开的子菜单不用再打开了 - clearTimeout(timeoutOpen); - // 准备打开当前子菜单 - timeout = timeoutOpen = setTimeout(() => that.openSubMenu($submenu), that.options.subMenuDelay); - $submenu.data('timeoutOpen.mdui.menu', timeout); - } - } - // 鼠标移出菜单项时,关闭菜单项下的子菜单 - else if (eventType === 'mouseout') { - if ($submenu.length) { - // 鼠标移出菜单项时,如果当前菜单项下的子菜单正准备打开,不用再打开了 - const tmpOpen = $submenu.data('timeoutOpen.mdui.menu'); - if (tmpOpen) { - clearTimeout(tmpOpen); - } - // 准备关闭当前子菜单 - timeout = setTimeout(() => that.closeSubMenu($submenu), that.options.subMenuDelay); - $submenu.data('timeoutClose.mdui.menu', timeout); - } - } - }); - } - } - /** - * 动画结束回调 - */ - transitionEnd() { - this.$element.removeClass('mdui-menu-closing'); - if (this.state === 'opening') { - this.state = 'opened'; - this.triggerEvent('opened'); - } - if (this.state === 'closing') { - this.state = 'closed'; - this.triggerEvent('closed'); - // 关闭后,恢复菜单样式到默认状态,并恢复 fixed 定位 - this.$element.css({ - top: '', - left: '', - width: '', - position: 'fixed', - }); - } - } - /** - * 切换菜单状态 - */ - toggle() { - this.isOpen() ? this.close() : this.open(); - } - /** - * 打开菜单 - */ - open() { - if (this.isOpen()) { - return; - } - this.state = 'opening'; - this.triggerEvent('open'); - this.readjust(); - this.$element - // 菜单隐藏状态使用使用 fixed 定位。 - .css('position', this.options.fixed ? 'fixed' : 'absolute') - .addClass('mdui-menu-open') - .transitionEnd(() => this.transitionEnd()); - } - /** - * 关闭菜单 - */ - close() { - if (!this.isOpen()) { - return; - } - this.state = 'closing'; - this.triggerEvent('close'); - // 菜单开始关闭时,关闭所有子菜单 - this.$element.find('.mdui-menu').each((_, submenu) => { - this.closeSubMenu($(submenu)); - }); - this.$element - .removeClass('mdui-menu-open') - .addClass('mdui-menu-closing') - .transitionEnd(() => this.transitionEnd()); - } -} -mdui.Menu = Menu; - -const customAttr$9 = 'mdui-menu'; -const dataName$3 = '_mdui_menu'; -$(() => { - $document.on('click', `[${customAttr$9}]`, function () { - const $this = $(this); - let instance = $this.data(dataName$3); - if (!instance) { - const options = parseOptions(this, customAttr$9); - const menuSelector = options.target; - delete options.target; - instance = new mdui.Menu($this, menuSelector, options); - $this.data(dataName$3, instance); - instance.toggle(); - } - }); -}); - -export default mdui; -//# sourceMappingURL=mdui.esm.js.map diff --git a/js/mdui.esm.js.map b/js/mdui.esm.js.map deleted file mode 100644 index 08ca790..0000000 --- a/js/mdui.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mdui.esm.js","sources":["../../node_modules/mdui.jq/es/utils.js","../../node_modules/mdui.jq/es/functions/each.js","../../node_modules/mdui.jq/es/JQ.js","../../node_modules/mdui.jq/es/$.js","../../src/utils/dom.ts","../../src/mdui.ts","../../node_modules/mdui.jq/es/methods/each.js","../../node_modules/mdui.jq/es/functions/contains.js","../../node_modules/mdui.jq/es/functions/merge.js","../../node_modules/mdui.jq/es/methods/get.js","../../node_modules/mdui.jq/es/methods/find.js","../../node_modules/mdui.jq/es/methods/utils/event.js","../../node_modules/mdui.jq/es/methods/trigger.js","../../node_modules/mdui.jq/es/functions/extend.js","../../node_modules/mdui.jq/es/functions/param.js","../../node_modules/mdui.jq/es/functions/utils/ajax.js","../../node_modules/mdui.jq/es/functions/ajax.js","../../node_modules/mdui.jq/es/static/ajax.js","../../node_modules/mdui.jq/es/functions/ajaxSetup.js","../../node_modules/mdui.jq/es/static/ajaxSetup.js","../../node_modules/mdui.jq/es/static/contains.js","../../node_modules/mdui.jq/es/functions/utils/data.js","../../node_modules/mdui.jq/es/functions/data.js","../../node_modules/mdui.jq/es/static/data.js","../../node_modules/mdui.jq/es/static/each.js","../../node_modules/mdui.jq/es/static/extend.js","../../node_modules/mdui.jq/es/functions/map.js","../../node_modules/mdui.jq/es/static/map.js","../../node_modules/mdui.jq/es/static/merge.js","../../node_modules/mdui.jq/es/static/param.js","../../node_modules/mdui.jq/es/functions/removeData.js","../../node_modules/mdui.jq/es/static/removeData.js","../../node_modules/mdui.jq/es/functions/unique.js","../../node_modules/mdui.jq/es/static/unique.js","../../node_modules/mdui.jq/es/methods/add.js","../../node_modules/mdui.jq/es/methods/addClass.js","../../node_modules/mdui.jq/es/methods/insertBefore.js","../../node_modules/mdui.jq/es/methods/before.js","../../node_modules/mdui.jq/es/methods/off.js","../../node_modules/mdui.jq/es/methods/on.js","../../node_modules/mdui.jq/es/methods/ajaxStart.js","../../node_modules/mdui.jq/es/methods/map.js","../../node_modules/mdui.jq/es/methods/clone.js","../../node_modules/mdui.jq/es/methods/is.js","../../node_modules/mdui.jq/es/methods/remove.js","../../node_modules/mdui.jq/es/methods/append.js","../../node_modules/mdui.jq/es/methods/appendTo.js","../../node_modules/mdui.jq/es/methods/attr.js","../../node_modules/mdui.jq/es/methods/children.js","../../node_modules/mdui.jq/es/methods/slice.js","../../node_modules/mdui.jq/es/methods/eq.js","../../node_modules/mdui.jq/es/methods/utils/dir.js","../../node_modules/mdui.jq/es/methods/parent.js","../../node_modules/mdui.jq/es/methods/closest.js","../../node_modules/mdui.jq/es/methods/data.js","../../node_modules/mdui.jq/es/methods/empty.js","../../node_modules/mdui.jq/es/methods/extend.js","../../node_modules/mdui.jq/es/methods/filter.js","../../node_modules/mdui.jq/es/methods/first.js","../../node_modules/mdui.jq/es/methods/has.js","../../node_modules/mdui.jq/es/methods/hasClass.js","../../node_modules/mdui.jq/es/methods/width.js","../../node_modules/mdui.jq/es/methods/hide.js","../../node_modules/mdui.jq/es/methods/val.js","../../node_modules/mdui.jq/es/methods/index.js","../../node_modules/mdui.jq/es/methods/last.js","../../node_modules/mdui.jq/es/methods/next.js","../../node_modules/mdui.jq/es/methods/not.js","../../node_modules/mdui.jq/es/methods/offsetParent.js","../../node_modules/mdui.jq/es/methods/position.js","../../node_modules/mdui.jq/es/methods/offset.js","../../node_modules/mdui.jq/es/methods/one.js","../../node_modules/mdui.jq/es/methods/prev.js","../../node_modules/mdui.jq/es/methods/removeAttr.js","../../node_modules/mdui.jq/es/methods/removeData.js","../../node_modules/mdui.jq/es/methods/removeProp.js","../../node_modules/mdui.jq/es/methods/replaceWith.js","../../node_modules/mdui.jq/es/methods/replaceAll.js","../../node_modules/mdui.jq/es/methods/serializeArray.js","../../node_modules/mdui.jq/es/methods/serialize.js","../../node_modules/mdui.jq/es/methods/show.js","../../node_modules/mdui.jq/es/methods/siblings.js","../../node_modules/mdui.jq/es/methods/toggle.js","../../src/jq_extends/methods/reflow.ts","../../src/jq_extends/methods/transition.ts","../../src/jq_extends/methods/transitionEnd.ts","../../src/jq_extends/methods/transformOrigin.ts","../../src/jq_extends/methods/transform.ts","../../src/utils/mutation.ts","../../src/jq_extends/methods/mutation.ts","../../src/jq_extends/static/showOverlay.ts","../../src/jq_extends/static/hideOverlay.ts","../../src/jq_extends/static/lockScreen.ts","../../src/jq_extends/static/unlockScreen.ts","../../src/jq_extends/static/throttle.ts","../../src/jq_extends/static/guid.ts","../../src/global/mutation.ts","../../src/utils/componentEvent.ts","../../src/components/headroom/index.ts","../../src/utils/parseOptions.ts","../../src/components/headroom/customAttr.ts","../../src/components/collapse/collapseAbstract.ts","../../src/components/collapse/index.ts","../../src/components/collapse/customAttr.ts","../../src/components/panel/index.ts","../../src/components/panel/customAttr.ts","../../src/components/table/index.ts","../../src/utils/touchHandler.ts","../../src/components/ripple/index.ts","../../src/components/textfield/index.ts","../../src/components/slider/index.ts","../../src/components/fab/index.ts","../../src/components/fab/customAttr.ts","../../src/components/select/index.ts","../../src/components/select/customAttr.ts","../../src/components/appbar/index.ts","../../src/components/tab/index.ts","../../src/components/tab/customAttr.ts","../../src/components/drawer/index.ts","../../src/components/drawer/customAttr.ts","../../src/utils/queue.ts","../../src/components/dialog/class.ts","../../src/components/dialog/index.ts","../../src/components/dialog/customAttr.ts","../../src/components/dialog/dialog.ts","../../src/components/dialog/alert.ts","../../src/components/dialog/confirm.ts","../../src/components/dialog/prompt.ts","../../src/components/tooltip/index.ts","../../src/components/tooltip/customAttr.ts","../../src/components/snackbar/index.ts","../../src/components/bottom_nav/index.ts","../../src/components/progress/spinner.ts","../../src/components/menu/index.ts","../../src/components/menu/customAttr.ts"],"sourcesContent":["function isNodeName(element, name) {\n return element.nodeName.toLowerCase() === name.toLowerCase();\n}\nfunction isFunction(target) {\n return typeof target === 'function';\n}\nfunction isString(target) {\n return typeof target === 'string';\n}\nfunction isNumber(target) {\n return typeof target === 'number';\n}\nfunction isBoolean(target) {\n return typeof target === 'boolean';\n}\nfunction isUndefined(target) {\n return typeof target === 'undefined';\n}\nfunction isNull(target) {\n return target === null;\n}\nfunction isWindow(target) {\n return target instanceof Window;\n}\nfunction isDocument(target) {\n return target instanceof Document;\n}\nfunction isElement(target) {\n return target instanceof Element;\n}\nfunction isNode(target) {\n return target instanceof Node;\n}\n/**\n * 是否是 IE 浏览器\n */\nfunction isIE() {\n // @ts-ignore\n return !!window.document.documentMode;\n}\nfunction isArrayLike(target) {\n if (isFunction(target) || isWindow(target)) {\n return false;\n }\n return isNumber(target.length);\n}\nfunction isObjectLike(target) {\n return typeof target === 'object' && target !== null;\n}\nfunction toElement(target) {\n return isDocument(target) ? target.documentElement : target;\n}\n/**\n * 把用 - 分隔的字符串转为驼峰(如 box-sizing 转换为 boxSizing)\n * @param string\n */\nfunction toCamelCase(string) {\n return string\n .replace(/^-ms-/, 'ms-')\n .replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n/**\n * 把驼峰法转为用 - 分隔的字符串(如 boxSizing 转换为 box-sizing)\n * @param string\n */\nfunction toKebabCase(string) {\n return string.replace(/[A-Z]/g, (replacer) => '-' + replacer.toLowerCase());\n}\n/**\n * 获取元素的样式值\n * @param element\n * @param name\n */\nfunction getComputedStyleValue(element, name) {\n return window.getComputedStyle(element).getPropertyValue(toKebabCase(name));\n}\n/**\n * 检查元素的 box-sizing 是否是 border-box\n * @param element\n */\nfunction isBorderBox(element) {\n return getComputedStyleValue(element, 'box-sizing') === 'border-box';\n}\n/**\n * 获取元素的 padding, border, margin 宽度(两侧宽度的和,单位为px)\n * @param element\n * @param direction\n * @param extra\n */\nfunction getExtraWidth(element, direction, extra) {\n const position = direction === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n return [0, 1].reduce((prev, _, index) => {\n let prop = extra + position[index];\n if (extra === 'border') {\n prop += 'Width';\n }\n return prev + parseFloat(getComputedStyleValue(element, prop) || '0');\n }, 0);\n}\n/**\n * 获取元素的样式值,对 width 和 height 进行过处理\n * @param element\n * @param name\n */\nfunction getStyle(element, name) {\n // width、height 属性使用 getComputedStyle 得到的值不准确,需要使用 getBoundingClientRect 获取\n if (name === 'width' || name === 'height') {\n const valueNumber = element.getBoundingClientRect()[name];\n if (isBorderBox(element)) {\n return `${valueNumber}px`;\n }\n return `${valueNumber -\n getExtraWidth(element, name, 'border') -\n getExtraWidth(element, name, 'padding')}px`;\n }\n return getComputedStyleValue(element, name);\n}\n/**\n * 获取子节点组成的数组\n * @param target\n * @param parent\n */\nfunction getChildNodesArray(target, parent) {\n const tempParent = document.createElement(parent);\n tempParent.innerHTML = target;\n return [].slice.call(tempParent.childNodes);\n}\n/**\n * 始终返回 false 的函数\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 数值单位的 CSS 属性\n */\nconst cssNumber = [\n 'animationIterationCount',\n 'columnCount',\n 'fillOpacity',\n 'flexGrow',\n 'flexShrink',\n 'fontWeight',\n 'gridArea',\n 'gridColumn',\n 'gridColumnEnd',\n 'gridColumnStart',\n 'gridRow',\n 'gridRowEnd',\n 'gridRowStart',\n 'lineHeight',\n 'opacity',\n 'order',\n 'orphans',\n 'widows',\n 'zIndex',\n 'zoom',\n];\nexport { isNodeName, isArrayLike, isObjectLike, isFunction, isString, isNumber, isBoolean, isUndefined, isNull, isWindow, isDocument, isElement, isNode, isIE, toElement, toCamelCase, toKebabCase, getComputedStyleValue, isBorderBox, getExtraWidth, getStyle, getChildNodesArray, returnFalse, cssNumber, };\n","import { isArrayLike } from '../utils';\nfunction each(target, callback) {\n if (isArrayLike(target)) {\n for (let i = 0; i < target.length; i += 1) {\n if (callback.call(target[i], i, target[i]) === false) {\n return target;\n }\n }\n }\n else {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i += 1) {\n if (callback.call(target[keys[i]], keys[i], target[keys[i]]) === false) {\n return target;\n }\n }\n }\n return target;\n}\nexport default each;\n","import each from './functions/each';\n/**\n * 为了使用模块扩充,这里不能使用默认导出\n */\nexport class JQ {\n constructor(arr) {\n this.length = 0;\n if (!arr) {\n return this;\n }\n each(arr, (i, item) => {\n // @ts-ignore\n this[i] = item;\n });\n this.length = arr.length;\n return this;\n }\n}\n","import each from './functions/each';\nimport { JQ } from './JQ';\nimport { getChildNodesArray, isArrayLike, isFunction, isNode, isString, } from './utils';\nfunction get$() {\n const $ = function (selector) {\n if (!selector) {\n return new JQ();\n }\n // JQ\n if (selector instanceof JQ) {\n return selector;\n }\n // function\n if (isFunction(selector)) {\n if (/complete|loaded|interactive/.test(document.readyState) &&\n document.body) {\n selector.call(document, $);\n }\n else {\n document.addEventListener('DOMContentLoaded', () => selector.call(document, $), false);\n }\n return new JQ([document]);\n }\n // String\n if (isString(selector)) {\n const html = selector.trim();\n // 根据 HTML 字符串创建 JQ 对象\n if (html[0] === '<' && html[html.length - 1] === '>') {\n let toCreate = 'div';\n const tags = {\n li: 'ul',\n tr: 'tbody',\n td: 'tr',\n th: 'tr',\n tbody: 'table',\n option: 'select',\n };\n each(tags, (childTag, parentTag) => {\n if (html.indexOf(`<${childTag}`) === 0) {\n toCreate = parentTag;\n return false;\n }\n return;\n });\n return new JQ(getChildNodesArray(html, toCreate));\n }\n // 根据 CSS 选择器创建 JQ 对象\n const isIdSelector = selector[0] === '#' && !selector.match(/[ .<>:~]/);\n if (!isIdSelector) {\n return new JQ(document.querySelectorAll(selector));\n }\n const element = document.getElementById(selector.slice(1));\n if (element) {\n return new JQ([element]);\n }\n return new JQ();\n }\n if (isArrayLike(selector) && !isNode(selector)) {\n return new JQ(selector);\n }\n return new JQ([selector]);\n };\n $.fn = JQ.prototype;\n return $;\n}\nconst $ = get$();\nexport default $;\n","import $ from 'mdui.jq/es/$';\n\nconst $document = $(document);\nconst $window = $(window);\nconst $body = $('body');\n\nexport { $document, $window, $body };\n","import { MduiStatic } from './interfaces/MduiStatic';\nimport $ from 'mdui.jq/es/$';\nimport { $body } from './utils/dom';\n\n// 避免页面加载完后直接执行css动画\n// https://css-tricks.com/transitions-only-after-page-load/\nsetTimeout(() => $body.addClass('mdui-loaded'));\n\nconst mdui = {\n $: $,\n} as MduiStatic;\n\nexport default mdui;\n","import $ from '../$';\nimport each from '../functions/each';\n$.fn.each = function (callback) {\n return each(this, callback);\n};\n","import { toElement } from '../utils';\n/**\n * 检查 container 元素内是否包含 contains 元素\n * @param container 父元素\n * @param contains 子元素\n * @example\n```js\ncontains( document, document.body ); // true\ncontains( document.getElementById('test'), document ); // false\ncontains( $('.container').get(0), $('.contains').get(0) ); // false\n```\n */\nfunction contains(container, contains) {\n return container !== contains && toElement(container).contains(contains);\n}\nexport default contains;\n","import each from './each';\n/**\n * 把第二个数组的元素追加到第一个数组中,并返回合并后的数组\n * @param first 第一个数组\n * @param second 该数组的元素将被追加到第一个数组中\n * @example\n```js\nmerge( [ 0, 1, 2 ], [ 2, 3, 4 ] )\n// [ 0, 1, 2, 2, 3, 4 ]\n```\n */\nfunction merge(first, second) {\n each(second, (_, value) => {\n first.push(value);\n });\n return first;\n}\nexport default merge;\n","import $ from '../$';\n$.fn.get = function (index) {\n return index === undefined\n ? [].slice.call(this)\n : this[index >= 0 ? index : index + this.length];\n};\n","import $ from '../$';\nimport merge from '../functions/merge';\nimport { JQ } from '../JQ';\nimport './each';\nimport './get';\n$.fn.find = function (selector) {\n const foundElements = [];\n this.each((_, element) => {\n merge(foundElements, $(element.querySelectorAll(selector)).get());\n });\n return new JQ(foundElements);\n};\n","import $ from '../../$';\nimport contains from '../../functions/contains';\nimport { isObjectLike } from '../../utils';\nimport '../find';\n// 存储事件\nconst handlers = {};\n// 元素ID\nlet mduiElementId = 1;\n/**\n * 为元素赋予一个唯一的ID\n */\nfunction getElementId(element) {\n const key = '_mduiEventId';\n // @ts-ignore\n if (!element[key]) {\n // @ts-ignore\n element[key] = ++mduiElementId;\n }\n // @ts-ignore\n return element[key];\n}\n/**\n * 解析事件名中的命名空间\n */\nfunction parse(type) {\n const parts = type.split('.');\n return {\n type: parts[0],\n ns: parts.slice(1).sort().join(' '),\n };\n}\n/**\n * 命名空间匹配规则\n */\nfunction matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');\n}\n/**\n * 获取匹配的事件\n * @param element\n * @param type\n * @param func\n * @param selector\n */\nfunction getHandlers(element, type, func, selector) {\n const event = parse(type);\n return (handlers[getElementId(element)] || []).filter((handler) => handler &&\n (!event.type || handler.type === event.type) &&\n (!event.ns || matcherFor(event.ns).test(handler.ns)) &&\n (!func || getElementId(handler.func) === getElementId(func)) &&\n (!selector || handler.selector === selector));\n}\n/**\n * 添加事件监听\n * @param element\n * @param types\n * @param func\n * @param data\n * @param selector\n */\nfunction add(element, types, func, data, selector) {\n const elementId = getElementId(element);\n if (!handlers[elementId]) {\n handlers[elementId] = [];\n }\n // 传入 data.useCapture 来设置 useCapture: true\n let useCapture = false;\n if (isObjectLike(data) && data.useCapture) {\n useCapture = true;\n }\n types.split(' ').forEach((type) => {\n if (!type) {\n return;\n }\n const event = parse(type);\n function callFn(e, elem) {\n // 因为鼠标事件模拟事件的 detail 属性是只读的,因此在 e._detail 中存储参数\n const result = func.apply(elem, \n // @ts-ignore\n e._detail === undefined ? [e] : [e].concat(e._detail));\n if (result === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n function proxyFn(e) {\n // @ts-ignore\n if (e._ns && !matcherFor(e._ns).test(event.ns)) {\n return;\n }\n // @ts-ignore\n e._data = data;\n if (selector) {\n // 事件代理\n $(element)\n .find(selector)\n .get()\n .reverse()\n .forEach((elem) => {\n if (elem === e.target ||\n contains(elem, e.target)) {\n callFn(e, elem);\n }\n });\n }\n else {\n // 不使用事件代理\n callFn(e, element);\n }\n }\n const handler = {\n type: event.type,\n ns: event.ns,\n func,\n selector,\n id: handlers[elementId].length,\n proxy: proxyFn,\n };\n handlers[elementId].push(handler);\n element.addEventListener(handler.type, proxyFn, useCapture);\n });\n}\n/**\n * 移除事件监听\n * @param element\n * @param types\n * @param func\n * @param selector\n */\nfunction remove(element, types, func, selector) {\n const handlersInElement = handlers[getElementId(element)] || [];\n const removeEvent = (handler) => {\n delete handlersInElement[handler.id];\n element.removeEventListener(handler.type, handler.proxy, false);\n };\n if (!types) {\n handlersInElement.forEach((handler) => removeEvent(handler));\n }\n else {\n types.split(' ').forEach((type) => {\n if (type) {\n getHandlers(element, type, func, selector).forEach((handler) => removeEvent(handler));\n }\n });\n }\n}\nexport { parse, add, remove };\n","import $ from '../$';\nimport './each';\nimport { parse } from './utils/event';\n$.fn.trigger = function (type, extraParameters) {\n const event = parse(type);\n let eventObject;\n const eventParams = {\n bubbles: true,\n cancelable: true,\n };\n const isMouseEvent = ['click', 'mousedown', 'mouseup', 'mousemove'].indexOf(event.type) > -1;\n if (isMouseEvent) {\n // Note: MouseEvent 无法传入 detail 参数\n eventObject = new MouseEvent(event.type, eventParams);\n }\n else {\n eventParams.detail = extraParameters;\n eventObject = new CustomEvent(event.type, eventParams);\n }\n // @ts-ignore\n eventObject._detail = extraParameters;\n // @ts-ignore\n eventObject._ns = event.ns;\n return this.each(function () {\n this.dispatchEvent(eventObject);\n });\n};\n","import each from '../functions/each';\nimport { isUndefined } from '../utils';\nfunction extend(target, object1, ...objectN) {\n objectN.unshift(object1);\n each(objectN, (_, object) => {\n each(object, (prop, value) => {\n if (!isUndefined(value)) {\n target[prop] = value;\n }\n });\n });\n return target;\n}\nexport default extend;\n","import { isObjectLike } from '../utils';\nimport each from './each';\n/**\n * 将数组或对象序列化,序列化后的字符串可作为 URL 查询字符串使用\n *\n * 若传入数组,则格式必须和 serializeArray 方法的返回值一样\n * @param obj 对象或数组\n * @example\n```js\nparam({ width: 1680, height: 1050 });\n// width=1680&height=1050\n```\n * @example\n```js\nparam({ foo: { one: 1, two: 2 }})\n// foo[one]=1&foo[two]=2\n```\n * @example\n```js\nparam({ids: [1, 2, 3]})\n// ids[]=1&ids[]=2&ids[]=3\n```\n * @example\n```js\nparam([\n {\"name\":\"name\",\"value\":\"mdui\"},\n {\"name\":\"password\",\"value\":\"123456\"}\n])\n// name=mdui&password=123456\n```\n */\nfunction param(obj) {\n if (!isObjectLike(obj) && !Array.isArray(obj)) {\n return '';\n }\n const args = [];\n function destructure(key, value) {\n let keyTmp;\n if (isObjectLike(value)) {\n each(value, (i, v) => {\n if (Array.isArray(value) && !isObjectLike(v)) {\n keyTmp = '';\n }\n else {\n keyTmp = i;\n }\n destructure(`${key}[${keyTmp}]`, v);\n });\n }\n else {\n if (value == null || value === '') {\n keyTmp = '=';\n }\n else {\n keyTmp = `=${encodeURIComponent(value)}`;\n }\n args.push(encodeURIComponent(key) + keyTmp);\n }\n }\n if (Array.isArray(obj)) {\n each(obj, function () {\n destructure(this.name, this.value);\n });\n }\n else {\n each(obj, destructure);\n }\n return args.join('&');\n}\nexport default param;\n","// 全局配置参数\nconst globalOptions = {};\n// 全局事件名\nconst ajaxEvents = {\n ajaxStart: 'start.mdui.ajax',\n ajaxSuccess: 'success.mdui.ajax',\n ajaxError: 'error.mdui.ajax',\n ajaxComplete: 'complete.mdui.ajax',\n};\nexport { globalOptions, ajaxEvents };\n","import $ from '../$';\nimport '../methods/trigger';\nimport { isString, isUndefined } from '../utils';\nimport each from './each';\nimport extend from './extend';\nimport param from './param';\nimport { ajaxEvents, globalOptions } from './utils/ajax';\n/**\n * 判断此请求方法是否通过查询字符串提交参数\n * @param method 请求方法,大写\n */\nfunction isQueryStringData(method) {\n return ['GET', 'HEAD'].indexOf(method) >= 0;\n}\n/**\n * 添加参数到 URL 上,且 URL 中不存在 ? 时,自动把第一个 & 替换为 ?\n * @param url\n * @param query\n */\nfunction appendQuery(url, query) {\n return `${url}&${query}`.replace(/[&?]{1,2}/, '?');\n}\n/**\n * 合并请求参数,参数优先级:options > globalOptions > defaults\n * @param options\n */\nfunction mergeOptions(options) {\n // 默认参数\n const defaults = {\n url: '',\n method: 'GET',\n data: '',\n processData: true,\n async: true,\n cache: true,\n username: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n global: true,\n };\n // globalOptions 中的回调函数不合并\n each(globalOptions, (key, value) => {\n const callbacks = [\n 'beforeSend',\n 'success',\n 'error',\n 'complete',\n 'statusCode',\n ];\n // @ts-ignore\n if (callbacks.indexOf(key) < 0 && !isUndefined(value)) {\n defaults[key] = value;\n }\n });\n return extend({}, defaults, options);\n}\n/**\n * 发送 ajax 请求\n * @param options\n * @example\n```js\najax({\n method: \"POST\",\n url: \"some.php\",\n data: { name: \"John\", location: \"Boston\" }\n}).then(function( msg ) {\n alert( \"Data Saved: \" + msg );\n});\n```\n */\nfunction ajax(options) {\n // 是否已取消请求\n let isCanceled = false;\n // 事件参数\n const eventParams = {};\n // 参数合并\n const mergedOptions = mergeOptions(options);\n let url = mergedOptions.url || window.location.toString();\n const method = mergedOptions.method.toUpperCase();\n let data = mergedOptions.data;\n const processData = mergedOptions.processData;\n const async = mergedOptions.async;\n const cache = mergedOptions.cache;\n const username = mergedOptions.username;\n const password = mergedOptions.password;\n const headers = mergedOptions.headers;\n const xhrFields = mergedOptions.xhrFields;\n const statusCode = mergedOptions.statusCode;\n const dataType = mergedOptions.dataType;\n const contentType = mergedOptions.contentType;\n const timeout = mergedOptions.timeout;\n const global = mergedOptions.global;\n // 需要发送的数据\n // GET/HEAD 请求和 processData 为 true 时,转换为查询字符串格式,特殊格式不转换\n if (data &&\n (isQueryStringData(method) || processData) &&\n !isString(data) &&\n !(data instanceof ArrayBuffer) &&\n !(data instanceof Blob) &&\n !(data instanceof Document) &&\n !(data instanceof FormData)) {\n data = param(data);\n }\n // 对于 GET、HEAD 类型的请求,把 data 数据添加到 URL 中\n if (data && isQueryStringData(method)) {\n // 查询字符串拼接到 URL 中\n url = appendQuery(url, data);\n data = null;\n }\n /**\n * 触发事件和回调函数\n * @param event\n * @param params\n * @param callback\n * @param args\n */\n function trigger(event, params, callback, ...args) {\n // 触发全局事件\n if (global) {\n $(document).trigger(event, params);\n }\n // 触发 ajax 回调和事件\n let result1;\n let result2;\n if (callback) {\n // 全局回调\n if (callback in globalOptions) {\n // @ts-ignore\n result1 = globalOptions[callback](...args);\n }\n // 自定义回调\n if (mergedOptions[callback]) {\n // @ts-ignore\n result2 = mergedOptions[callback](...args);\n }\n // beforeSend 回调返回 false 时取消 ajax 请求\n if (callback === 'beforeSend' &&\n (result1 === false || result2 === false)) {\n isCanceled = true;\n }\n }\n }\n // XMLHttpRequest 请求\n function XHR() {\n let textStatus;\n return new Promise((resolve, reject) => {\n // GET/HEAD 请求的缓存处理\n if (isQueryStringData(method) && !cache) {\n url = appendQuery(url, `_=${Date.now()}`);\n }\n // 创建 XHR\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, async, username, password);\n if (contentType ||\n (data && !isQueryStringData(method) && contentType !== false)) {\n xhr.setRequestHeader('Content-Type', contentType);\n }\n // 设置 Accept\n if (dataType === 'json') {\n xhr.setRequestHeader('Accept', 'application/json, text/javascript');\n }\n // 添加 headers\n if (headers) {\n each(headers, (key, value) => {\n // undefined 值不发送,string 和 null 需要发送\n if (!isUndefined(value)) {\n xhr.setRequestHeader(key, value + ''); // 把 null 转换成字符串\n }\n });\n }\n // 检查是否是跨域请求,跨域请求时不添加 X-Requested-With\n const crossDomain = /^([\\w-]+:)?\\/\\/([^/]+)/.test(url) &&\n RegExp.$2 !== window.location.host;\n if (!crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n if (xhrFields) {\n each(xhrFields, (key, value) => {\n // @ts-ignore\n xhr[key] = value;\n });\n }\n eventParams.xhr = xhr;\n eventParams.options = mergedOptions;\n let xhrTimeout;\n xhr.onload = function () {\n if (xhrTimeout) {\n clearTimeout(xhrTimeout);\n }\n // AJAX 返回的 HTTP 响应码是否表示成功\n const isHttpStatusSuccess = (xhr.status >= 200 && xhr.status < 300) ||\n xhr.status === 304 ||\n xhr.status === 0;\n let responseData;\n if (isHttpStatusSuccess) {\n if (xhr.status === 204 || method === 'HEAD') {\n textStatus = 'nocontent';\n }\n else if (xhr.status === 304) {\n textStatus = 'notmodified';\n }\n else {\n textStatus = 'success';\n }\n if (dataType === 'json') {\n try {\n responseData =\n method === 'HEAD' ? undefined : JSON.parse(xhr.responseText);\n eventParams.data = responseData;\n }\n catch (err) {\n textStatus = 'parsererror';\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, textStatus);\n reject(new Error(textStatus));\n }\n if (textStatus !== 'parsererror') {\n trigger(ajaxEvents.ajaxSuccess, eventParams, 'success', responseData, textStatus, xhr);\n resolve(responseData);\n }\n }\n else {\n responseData =\n method === 'HEAD'\n ? undefined\n : xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n eventParams.data = responseData;\n trigger(ajaxEvents.ajaxSuccess, eventParams, 'success', responseData, textStatus, xhr);\n resolve(responseData);\n }\n }\n else {\n textStatus = 'error';\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, textStatus);\n reject(new Error(textStatus));\n }\n // statusCode\n each([globalOptions.statusCode, statusCode], (_, func) => {\n if (func && func[xhr.status]) {\n if (isHttpStatusSuccess) {\n func[xhr.status](responseData, textStatus, xhr);\n }\n else {\n func[xhr.status](xhr, textStatus);\n }\n }\n });\n trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, textStatus);\n };\n xhr.onerror = function () {\n if (xhrTimeout) {\n clearTimeout(xhrTimeout);\n }\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, xhr.statusText);\n trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, 'error');\n reject(new Error(xhr.statusText));\n };\n xhr.onabort = function () {\n let statusText = 'abort';\n if (xhrTimeout) {\n statusText = 'timeout';\n clearTimeout(xhrTimeout);\n }\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, statusText);\n trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, statusText);\n reject(new Error(statusText));\n };\n // ajax start 回调\n trigger(ajaxEvents.ajaxStart, eventParams, 'beforeSend', xhr);\n if (isCanceled) {\n reject(new Error('cancel'));\n return;\n }\n // Timeout\n if (timeout > 0) {\n xhrTimeout = setTimeout(() => {\n xhr.abort();\n }, timeout);\n }\n // 发送 XHR\n xhr.send(data);\n });\n }\n return XHR();\n}\nexport default ajax;\n","import $ from '../$';\nimport ajax from '../functions/ajax';\n$.ajax = ajax;\n","import extend from '../functions/extend';\nimport { globalOptions } from './utils/ajax';\n/**\n * 为 Ajax 请求设置全局配置参数\n * @param options 键值对参数\n * @example\n```js\najaxSetup({\n dataType: 'json',\n method: 'POST',\n});\n```\n */\nfunction ajaxSetup(options) {\n return extend(globalOptions, options);\n}\nexport default ajaxSetup;\n","import $ from '../$';\nimport ajaxSetup from '../functions/ajaxSetup';\n$.ajaxSetup = ajaxSetup;\n","import $ from '../$';\nimport contains from '../functions/contains';\n$.contains = contains;\n","const dataNS = '_mduiElementDataStorage';\nexport default dataNS;\n","import { isObjectLike, isUndefined, toCamelCase } from '../utils';\nimport each from './each';\nimport dataNS from './utils/data';\n/**\n * 在元素上设置键值对数据\n * @param element\n * @param object\n */\nfunction setObjectToElement(element, object) {\n // @ts-ignore\n if (!element[dataNS]) {\n // @ts-ignore\n element[dataNS] = {};\n }\n each(object, (key, value) => {\n // @ts-ignore\n element[dataNS][toCamelCase(key)] = value;\n });\n}\nfunction data(element, key, value) {\n // 根据键值对设置值\n // data(element, { 'key' : 'value' })\n if (isObjectLike(key)) {\n setObjectToElement(element, key);\n return key;\n }\n // 根据 key、value 设置值\n // data(element, 'key', 'value')\n if (!isUndefined(value)) {\n setObjectToElement(element, { [key]: value });\n return value;\n }\n // 获取所有值\n // data(element)\n if (isUndefined(key)) {\n // @ts-ignore\n return element[dataNS] ? element[dataNS] : {};\n }\n // 从 dataNS 中获取指定值\n // data(element, 'key')\n key = toCamelCase(key);\n // @ts-ignore\n if (element[dataNS] && key in element[dataNS]) {\n // @ts-ignore\n return element[dataNS][key];\n }\n return undefined;\n}\nexport default data;\n","import $ from '../$';\nimport data from '../functions/data';\n$.data = data;\n","import $ from '../$';\nimport each from '../functions/each';\n$.each = each;\n","import $ from '../$';\nimport each from '../functions/each';\nimport extend from '../functions/extend';\n$.extend = function (...objectN) {\n if (objectN.length === 1) {\n each(objectN[0], (prop, value) => {\n this[prop] = value;\n });\n return this;\n }\n return extend(objectN.shift(), objectN.shift(), ...objectN);\n};\n","import each from './each';\nfunction map(elements, callback) {\n let value;\n const ret = [];\n each(elements, (i, element) => {\n value = callback.call(window, element, i);\n if (value != null) {\n ret.push(value);\n }\n });\n return [].concat(...ret);\n}\nexport default map;\n","import $ from '../$';\nimport map from '../functions/map';\n$.map = map;\n","import $ from '../$';\nimport merge from '../functions/merge';\n$.merge = merge;\n","import $ from '../$';\nimport param from '../functions/param';\n$.param = param;\n","import each from '../functions/each';\nimport { isUndefined, isString, toCamelCase } from '../utils';\nimport dataNS from './utils/data';\n/**\n * 移除指定元素上存放的数据\n * @param element 存放数据的元素\n * @param name\n * 数据键名\n *\n * 若未指定键名,将移除元素上所有数据\n *\n * 多个键名可以用空格分隔,或者用数组表示多个键名\n @example\n```js\n// 移除元素上键名为 name 的数据\nremoveData(document.body, 'name');\n```\n * @example\n```js\n// 移除元素上键名为 name1 和 name2 的数据\nremoveData(document.body, 'name1 name2');\n```\n * @example\n```js\n// 移除元素上键名为 name1 和 name2 的数据\nremoveData(document.body, ['name1', 'name2']);\n```\n * @example\n```js\n// 移除元素上所有数据\nremoveData(document.body);\n```\n */\nfunction removeData(element, name) {\n // @ts-ignore\n if (!element[dataNS]) {\n return;\n }\n const remove = (nameItem) => {\n nameItem = toCamelCase(nameItem);\n // @ts-ignore\n if (element[dataNS][nameItem]) {\n // @ts-ignore\n element[dataNS][nameItem] = null;\n // @ts-ignore\n delete element[dataNS][nameItem];\n }\n };\n if (isUndefined(name)) {\n // @ts-ignore\n element[dataNS] = null;\n // @ts-ignore\n delete element[dataNS];\n // @ts-ignore\n }\n else if (isString(name)) {\n name\n .split(' ')\n .filter((nameItem) => nameItem)\n .forEach((nameItem) => remove(nameItem));\n }\n else {\n each(name, (_, nameItem) => remove(nameItem));\n }\n}\nexport default removeData;\n","import $ from '../$';\nimport removeData from '../functions/removeData';\n$.removeData = removeData;\n","import each from './each';\n/**\n * 过滤掉数组中的重复元素\n * @param arr 数组\n * @example\n```js\nunique([1, 2, 12, 3, 2, 1, 2, 1, 1]);\n// [1, 2, 12, 3]\n```\n */\nfunction unique(arr) {\n const result = [];\n each(arr, (_, val) => {\n if (result.indexOf(val) === -1) {\n result.push(val);\n }\n });\n return result;\n}\nexport default unique;\n","import $ from '../$';\nimport unique from '../functions/unique';\n$.unique = unique;\n","import $ from '../$';\nimport merge from '../functions/merge';\nimport unique from '../functions/unique';\nimport { JQ } from '../JQ';\nimport './get';\n$.fn.add = function (selector) {\n return new JQ(unique(merge(this.get(), $(selector).get())));\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isElement, isFunction } from '../utils';\nimport './each';\neach(['add', 'remove', 'toggle'], (_, name) => {\n $.fn[`${name}Class`] = function (className) {\n if (name === 'remove' && !arguments.length) {\n return this.each((_, element) => {\n element.setAttribute('class', '');\n });\n }\n return this.each((i, element) => {\n if (!isElement(element)) {\n return;\n }\n const classes = (isFunction(className)\n ? className.call(element, i, element.getAttribute('class') || '')\n : className)\n .split(' ')\n .filter((name) => name);\n each(classes, (_, cls) => {\n element.classList[name](cls);\n });\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport './each';\neach(['insertBefore', 'insertAfter'], (nameIndex, name) => {\n $.fn[name] = function (target) {\n const $element = nameIndex ? $(this.get().reverse()) : this; // 顺序和 jQuery 保持一致\n const $target = $(target);\n const result = [];\n $target.each((index, target) => {\n if (!target.parentNode) {\n return;\n }\n $element.each((_, element) => {\n const newItem = index\n ? element.cloneNode(true)\n : element;\n const existingItem = nameIndex ? target.nextSibling : target;\n result.push(newItem);\n target.parentNode.insertBefore(newItem, existingItem);\n });\n });\n return $(nameIndex ? result.reverse() : result);\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport { getChildNodesArray, isFunction, isString, isElement } from '../utils';\nimport './each';\nimport './insertAfter';\nimport './insertBefore';\n/**\n * 是否不是 HTML 字符串(包裹在 <> 中)\n * @param target\n */\nfunction isPlainText(target) {\n return (isString(target) && (target[0] !== '<' || target[target.length - 1] !== '>'));\n}\neach(['before', 'after'], (nameIndex, name) => {\n $.fn[name] = function (...args) {\n // after 方法,多个参数需要按参数顺序添加到元素后面,所以需要将参数顺序反向处理\n if (nameIndex === 1) {\n args = args.reverse();\n }\n return this.each((index, element) => {\n const targets = isFunction(args[0])\n ? [args[0].call(element, index, element.innerHTML)]\n : args;\n each(targets, (_, target) => {\n let $target;\n if (isPlainText(target)) {\n $target = $(getChildNodesArray(target, 'div'));\n }\n else if (index && isElement(target)) {\n $target = $(target.cloneNode(true));\n }\n else {\n $target = $(target);\n }\n $target[nameIndex ? 'insertAfter' : 'insertBefore'](element);\n });\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isFunction, isObjectLike, returnFalse } from '../utils';\nimport './each';\nimport { remove } from './utils/event';\n$.fn.off = function (types, selector, callback) {\n // types 是对象\n if (isObjectLike(types)) {\n each(types, (type, fn) => {\n // this.off('click', undefined, function () {})\n // this.off('click', '.box', function () {})\n this.off(type, selector, fn);\n });\n return this;\n }\n // selector 不存在\n if (selector === false || isFunction(selector)) {\n callback = selector;\n selector = undefined;\n // this.off('click', undefined, function () {})\n }\n // callback 传入 `false`,相当于 `return false`\n if (callback === false) {\n callback = returnFalse;\n }\n return this.each(function () {\n remove(this, types, callback, selector);\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isObjectLike, isString, returnFalse } from '../utils';\nimport './each';\nimport './off';\nimport { add } from './utils/event';\n$.fn.on = function (types, selector, data, callback, one) {\n // types 可以是 type/func 对象\n if (isObjectLike(types)) {\n // (types-Object, selector, data)\n if (!isString(selector)) {\n // (types-Object, data)\n data = data || selector;\n selector = undefined;\n }\n each(types, (type, fn) => {\n // selector 和 data 都可能是 undefined\n // @ts-ignore\n this.on(type, selector, data, fn, one);\n });\n return this;\n }\n if (data == null && callback == null) {\n // (types, fn)\n callback = selector;\n data = selector = undefined;\n }\n else if (callback == null) {\n if (isString(selector)) {\n // (types, selector, fn)\n callback = data;\n data = undefined;\n }\n else {\n // (types, data, fn)\n callback = data;\n data = selector;\n selector = undefined;\n }\n }\n if (callback === false) {\n callback = returnFalse;\n }\n else if (!callback) {\n return this;\n }\n // $().one()\n if (one) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const origCallback = callback;\n callback = function (event) {\n _this.off(event.type, selector, callback);\n // eslint-disable-next-line prefer-rest-params\n return origCallback.apply(this, arguments);\n };\n }\n return this.each(function () {\n add(this, types, callback, data, selector);\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { ajaxEvents } from '../functions/utils/ajax';\nimport './on';\neach(ajaxEvents, (name, eventName) => {\n $.fn[name] = function (fn) {\n return this.on(eventName, (e, params) => {\n fn(e, params.xhr, params.options, params.data);\n });\n };\n});\n","import $ from '../$';\nimport map from '../functions/map';\nimport { JQ } from '../JQ';\n$.fn.map = function (callback) {\n return new JQ(map(this, (element, i) => callback.call(element, i, element)));\n};\n","import $ from '../$';\nimport './map';\n$.fn.clone = function () {\n return this.map(function () {\n return this.cloneNode(true);\n });\n};\n","import $ from '../$';\nimport { isDocument, isFunction, isString, isWindow } from '../utils';\nimport './each';\n$.fn.is = function (selector) {\n let isMatched = false;\n if (isFunction(selector)) {\n this.each((index, element) => {\n if (selector.call(element, index, element)) {\n isMatched = true;\n }\n });\n return isMatched;\n }\n if (isString(selector)) {\n this.each((_, element) => {\n if (isDocument(element) || isWindow(element)) {\n return;\n }\n // @ts-ignore\n const matches = element.matches || element.msMatchesSelector;\n if (matches.call(element, selector)) {\n isMatched = true;\n }\n });\n return isMatched;\n }\n const $compareWith = $(selector);\n this.each((_, element) => {\n $compareWith.each((_, compare) => {\n if (element === compare) {\n isMatched = true;\n }\n });\n });\n return isMatched;\n};\n","import $ from '../$';\nimport './each';\nimport './is';\n$.fn.remove = function (selector) {\n return this.each((_, element) => {\n if (element.parentNode && (!selector || $(element).is(selector))) {\n element.parentNode.removeChild(element);\n }\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isFunction, isString } from '../utils';\nimport './after';\nimport './before';\nimport './clone';\nimport './each';\nimport './map';\nimport './remove';\neach(['prepend', 'append'], (nameIndex, name) => {\n $.fn[name] = function (...args) {\n return this.each((index, element) => {\n const childNodes = element.childNodes;\n const childLength = childNodes.length;\n const child = childLength\n ? childNodes[nameIndex ? childLength - 1 : 0]\n : document.createElement('div');\n if (!childLength) {\n element.appendChild(child);\n }\n let contents = isFunction(args[0])\n ? [args[0].call(element, index, element.innerHTML)]\n : args;\n // 如果不是字符串,则仅第一个元素使用原始元素,其他的都克隆自第一个元素\n if (index) {\n contents = contents.map((content) => {\n return isString(content) ? content : $(content).clone();\n });\n }\n $(child)[nameIndex ? 'after' : 'before'](...contents);\n if (!childLength) {\n element.removeChild(child);\n }\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport './insertAfter';\nimport './insertBefore';\nimport './map';\nimport './remove';\neach(['appendTo', 'prependTo'], (nameIndex, name) => {\n $.fn[name] = function (target) {\n const extraChilds = [];\n const $target = $(target).map((_, element) => {\n const childNodes = element.childNodes;\n const childLength = childNodes.length;\n if (childLength) {\n return childNodes[nameIndex ? 0 : childLength - 1];\n }\n const child = document.createElement('div');\n element.appendChild(child);\n extraChilds.push(child);\n return child;\n });\n const $result = this[nameIndex ? 'insertBefore' : 'insertAfter']($target);\n $(extraChilds).remove();\n return $result;\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport { cssNumber, getStyle, isElement, isFunction, isNull, isNumber, isObjectLike, isUndefined, toCamelCase, } from '../utils';\nimport './each';\neach(['attr', 'prop', 'css'], (nameIndex, name) => {\n function set(element, key, value) {\n // 值为 undefined 时,不修改\n if (isUndefined(value)) {\n return;\n }\n switch (nameIndex) {\n // attr\n case 0:\n if (isNull(value)) {\n element.removeAttribute(key);\n }\n else {\n element.setAttribute(key, value);\n }\n break;\n // prop\n case 1:\n // @ts-ignore\n element[key] = value;\n break;\n // css\n default:\n key = toCamelCase(key);\n // @ts-ignore\n element.style[key] = isNumber(value)\n ? `${value}${cssNumber.indexOf(key) > -1 ? '' : 'px'}`\n : value;\n break;\n }\n }\n function get(element, key) {\n switch (nameIndex) {\n // attr\n case 0:\n // 属性不存在时,原生 getAttribute 方法返回 null,而 jquery 返回 undefined。这里和 jquery 保持一致\n const value = element.getAttribute(key);\n return isNull(value) ? undefined : value;\n // prop\n case 1:\n // @ts-ignore\n return element[key];\n // css\n default:\n return getStyle(element, key);\n }\n }\n $.fn[name] = function (key, value) {\n if (isObjectLike(key)) {\n each(key, (k, v) => {\n // @ts-ignore\n this[name](k, v);\n });\n return this;\n }\n if (arguments.length === 1) {\n const element = this[0];\n return isElement(element) ? get(element, key) : undefined;\n }\n return this.each((i, element) => {\n set(element, key, isFunction(value) ? value.call(element, i, get(element, key)) : value);\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport unique from '../functions/unique';\nimport { JQ } from '../JQ';\nimport { isElement } from '../utils';\nimport './each';\nimport './is';\n$.fn.children = function (selector) {\n const children = [];\n this.each((_, element) => {\n each(element.childNodes, (__, childNode) => {\n if (!isElement(childNode)) {\n return;\n }\n if (!selector || $(childNode).is(selector)) {\n children.push(childNode);\n }\n });\n });\n return new JQ(unique(children));\n};\n","import $ from '../$';\nimport { JQ } from '../JQ';\n$.fn.slice = function (...args) {\n return new JQ([].slice.apply(this, args));\n};\n","import $ from '../$';\nimport { JQ } from '../JQ';\nimport './slice';\n$.fn.eq = function (index) {\n const ret = index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n return new JQ(ret);\n};\n","import $ from '../../$';\nimport unique from '../../functions/unique';\nimport { JQ } from '../../JQ';\nimport { isElement } from '../../utils';\nimport '../each';\nimport '../is';\nexport default function dir($elements, nameIndex, node, selector, filter) {\n const ret = [];\n let target;\n $elements.each((_, element) => {\n target = element[node];\n // 不能包含最顶层的 document 元素\n while (target && isElement(target)) {\n // prevUntil, nextUntil, parentsUntil\n if (nameIndex === 2) {\n if (selector && $(target).is(selector)) {\n break;\n }\n if (!filter || $(target).is(filter)) {\n ret.push(target);\n }\n }\n // prev, next, parent\n else if (nameIndex === 0) {\n if (!selector || $(target).is(selector)) {\n ret.push(target);\n }\n break;\n }\n // prevAll, nextAll, parents\n else {\n if (!selector || $(target).is(selector)) {\n ret.push(target);\n }\n }\n // @ts-ignore\n target = target[node];\n }\n });\n return new JQ(unique(ret));\n}\n","import $ from '../$';\nimport each from '../functions/each';\nimport './get';\nimport dir from './utils/dir';\neach(['', 's', 'sUntil'], (nameIndex, name) => {\n $.fn[`parent${name}`] = function (selector, filter) {\n // parents、parentsUntil 需要把元素的顺序反向处理,以便和 jQuery 的结果一致\n const $nodes = !nameIndex ? this : $(this.get().reverse());\n return dir($nodes, nameIndex, 'parentNode', selector, filter);\n };\n});\n","import $ from '../$';\nimport { JQ } from '../JQ';\nimport './eq';\nimport './is';\nimport './parents';\n$.fn.closest = function (selector) {\n if (this.is(selector)) {\n return this;\n }\n const matched = [];\n this.parents().each((_, element) => {\n if ($(element).is(selector)) {\n matched.push(element);\n return false;\n }\n });\n return new JQ(matched);\n};\n","import $ from '../$';\nimport data from '../functions/data';\nimport { isObjectLike, isString, isUndefined, toCamelCase, toKebabCase, } from '../utils';\nimport './each';\nconst rbrace = /^(?:{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/;\n// 从 `data-*` 中获取的值,需要经过该函数转换\nfunction getData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === 'null') {\n return null;\n }\n if (value === +value + '') {\n return +value;\n }\n if (rbrace.test(value)) {\n return JSON.parse(value);\n }\n return value;\n}\n// 若 value 不存在,则从 `data-*` 中获取值\nfunction dataAttr(element, key, value) {\n if (isUndefined(value) && element.nodeType === 1) {\n const name = 'data-' + toKebabCase(key);\n value = element.getAttribute(name);\n if (isString(value)) {\n try {\n value = getData(value);\n }\n catch (e) { }\n }\n else {\n value = undefined;\n }\n }\n return value;\n}\n$.fn.data = function (key, value) {\n // 获取所有值\n if (isUndefined(key)) {\n if (!this.length) {\n return undefined;\n }\n const element = this[0];\n const resultData = data(element);\n // window, document 上不存在 `data-*` 属性\n if (element.nodeType !== 1) {\n return resultData;\n }\n // 从 `data-*` 中获取值\n const attrs = element.attributes;\n let i = attrs.length;\n while (i--) {\n if (attrs[i]) {\n let name = attrs[i].name;\n if (name.indexOf('data-') === 0) {\n name = toCamelCase(name.slice(5));\n resultData[name] = dataAttr(element, name, resultData[name]);\n }\n }\n }\n return resultData;\n }\n // 同时设置多个值\n if (isObjectLike(key)) {\n return this.each(function () {\n data(this, key);\n });\n }\n // value 传入了 undefined\n if (arguments.length === 2 && isUndefined(value)) {\n return this;\n }\n // 设置值\n if (!isUndefined(value)) {\n return this.each(function () {\n data(this, key, value);\n });\n }\n // 获取值\n if (!this.length) {\n return undefined;\n }\n return dataAttr(this[0], key, data(this[0], key));\n};\n","import $ from '../$';\nimport './each';\n$.fn.empty = function () {\n return this.each(function () {\n this.innerHTML = '';\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\n$.fn.extend = function (obj) {\n each(obj, (prop, value) => {\n // 在 JQ 对象上扩展方法时,需要自己添加 typescript 的类型定义\n $.fn[prop] = value;\n });\n return this;\n};\n","import $ from '../$';\nimport { isFunction, isString } from '../utils';\nimport './is';\nimport './map';\n$.fn.filter = function (selector) {\n if (isFunction(selector)) {\n return this.map((index, element) => selector.call(element, index, element) ? element : undefined);\n }\n if (isString(selector)) {\n return this.map((_, element) => $(element).is(selector) ? element : undefined);\n }\n const $selector = $(selector);\n return this.map((_, element) => $selector.get().indexOf(element) > -1 ? element : undefined);\n};\n","import $ from '../$';\nimport './eq';\n$.fn.first = function () {\n return this.eq(0);\n};\n","import $ from '../$';\nimport contains from '../functions/contains';\nimport { isString } from '../utils';\nimport './find';\n$.fn.has = function (selector) {\n const $targets = isString(selector) ? this.find(selector) : $(selector);\n const { length } = $targets;\n return this.map(function () {\n for (let i = 0; i < length; i += 1) {\n if (contains(this, $targets[i])) {\n return this;\n }\n }\n return;\n });\n};\n","import $ from '../$';\n$.fn.hasClass = function (className) {\n return this[0].classList.contains(className);\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isBoolean, isDocument, isFunction, isWindow, toElement, isBorderBox, getExtraWidth, getComputedStyleValue, isIE, } from '../utils';\nimport './css';\nimport './each';\n/**\n * 值上面的 padding、border、margin 处理\n * @param element\n * @param name\n * @param value\n * @param funcIndex\n * @param includeMargin\n * @param multiply\n */\nfunction handleExtraWidth(element, name, value, funcIndex, includeMargin, multiply) {\n // 获取元素的 padding, border, margin 宽度(两侧宽度的和)\n const getExtraWidthValue = (extra) => {\n return (getExtraWidth(element, name.toLowerCase(), extra) *\n multiply);\n };\n if (funcIndex === 2 && includeMargin) {\n value += getExtraWidthValue('margin');\n }\n if (isBorderBox(element)) {\n // IE 为 box-sizing: border-box 时,得到的值不含 border 和 padding,这里先修复\n // 仅获取时需要处理,multiply === 1 为 get\n if (isIE() && multiply === 1) {\n value += getExtraWidthValue('border');\n value += getExtraWidthValue('padding');\n }\n if (funcIndex === 0) {\n value -= getExtraWidthValue('border');\n }\n if (funcIndex === 1) {\n value -= getExtraWidthValue('border');\n value -= getExtraWidthValue('padding');\n }\n }\n else {\n if (funcIndex === 0) {\n value += getExtraWidthValue('padding');\n }\n if (funcIndex === 2) {\n value += getExtraWidthValue('border');\n value += getExtraWidthValue('padding');\n }\n }\n return value;\n}\n/**\n * 获取元素的样式值\n * @param element\n * @param name\n * @param funcIndex 0: innerWidth, innerHeight; 1: width, height; 2: outerWidth, outerHeight\n * @param includeMargin\n */\nfunction get(element, name, funcIndex, includeMargin) {\n const clientProp = `client${name}`;\n const scrollProp = `scroll${name}`;\n const offsetProp = `offset${name}`;\n const innerProp = `inner${name}`;\n // $(window).width()\n if (isWindow(element)) {\n // outerWidth, outerHeight 需要包含滚动条的宽度\n return funcIndex === 2\n ? element[innerProp]\n : toElement(document)[clientProp];\n }\n // $(document).width()\n if (isDocument(element)) {\n const doc = toElement(element);\n return Math.max(\n // @ts-ignore\n element.body[scrollProp], doc[scrollProp], \n // @ts-ignore\n element.body[offsetProp], doc[offsetProp], doc[clientProp]);\n }\n const value = parseFloat(getComputedStyleValue(element, name.toLowerCase()) || '0');\n return handleExtraWidth(element, name, value, funcIndex, includeMargin, 1);\n}\n/**\n * 设置元素的样式值\n * @param element\n * @param elementIndex\n * @param name\n * @param funcIndex 0: innerWidth, innerHeight; 1: width, height; 2: outerWidth, outerHeight\n * @param includeMargin\n * @param value\n */\nfunction set(element, elementIndex, name, funcIndex, includeMargin, value) {\n let computedValue = isFunction(value)\n ? value.call(element, elementIndex, get(element, name, funcIndex, includeMargin))\n : value;\n if (computedValue == null) {\n return;\n }\n const $element = $(element);\n const dimension = name.toLowerCase();\n // 特殊的值,不需要计算 padding、border、margin\n if (['auto', 'inherit', ''].indexOf(computedValue) > -1) {\n $element.css(dimension, computedValue);\n return;\n }\n // 其他值保留原始单位。注意:如果不使用 px 作为单位,则算出的值一般是不准确的\n const suffix = computedValue.toString().replace(/\\b[0-9.]*/, '');\n const numerical = parseFloat(computedValue);\n computedValue =\n handleExtraWidth(element, name, numerical, funcIndex, includeMargin, -1) +\n (suffix || 'px');\n $element.css(dimension, computedValue);\n}\neach(['Width', 'Height'], (_, name) => {\n each([`inner${name}`, name.toLowerCase(), `outer${name}`], (funcIndex, funcName) => {\n $.fn[funcName] = function (margin, value) {\n // 是否是赋值操作\n const isSet = arguments.length && (funcIndex < 2 || !isBoolean(margin));\n const includeMargin = margin === true || value === true;\n // 获取第一个元素的值\n if (!isSet) {\n return this.length\n ? get(this[0], name, funcIndex, includeMargin)\n : undefined;\n }\n // 设置每个元素的值\n return this.each((index, element) => set(element, index, name, funcIndex, includeMargin, margin));\n };\n });\n});\n","import $ from '../$';\nimport './each';\n$.fn.hide = function () {\n return this.each(function () {\n this.style.display = 'none';\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport map from '../functions/map';\nimport { isElement, isFunction, isUndefined, toElement } from '../utils';\nimport './each';\nimport './is';\neach(['val', 'html', 'text'], (nameIndex, name) => {\n const props = {\n 0: 'value',\n 1: 'innerHTML',\n 2: 'textContent',\n };\n const propName = props[nameIndex];\n function get($elements) {\n // text() 获取所有元素的文本\n if (nameIndex === 2) {\n // @ts-ignore\n return map($elements, (element) => toElement(element)[propName]).join('');\n }\n // 空集合时,val() 和 html() 返回 undefined\n if (!$elements.length) {\n return undefined;\n }\n // val() 和 html() 仅获取第一个元素的内容\n const firstElement = $elements[0];\n // select multiple 返回数组\n if (nameIndex === 0 && $(firstElement).is('select[multiple]')) {\n return map($(firstElement).find('option:checked'), (element) => element.value);\n }\n // @ts-ignore\n return firstElement[propName];\n }\n function set(element, value) {\n // text() 和 html() 赋值为 undefined,则保持原内容不变\n // val() 赋值为 undefined 则赋值为空\n if (isUndefined(value)) {\n if (nameIndex !== 0) {\n return;\n }\n value = '';\n }\n if (nameIndex === 1 && isElement(value)) {\n value = value.outerHTML;\n }\n // @ts-ignore\n element[propName] = value;\n }\n $.fn[name] = function (value) {\n // 获取值\n if (!arguments.length) {\n return get(this);\n }\n // 设置值\n return this.each((i, element) => {\n const computedValue = isFunction(value)\n ? value.call(element, i, get($(element)))\n : value;\n // value 是数组,则选中数组中的元素,反选不在数组中的元素\n if (nameIndex === 0 && Array.isArray(computedValue)) {\n // select[multiple]\n if ($(element).is('select[multiple]')) {\n map($(element).find('option'), (option) => (option.selected =\n computedValue.indexOf(option.value) >\n -1));\n }\n // 其他 checkbox, radio 等元素\n else {\n element.checked =\n computedValue.indexOf(element.value) > -1;\n }\n }\n else {\n set(element, computedValue);\n }\n });\n };\n});\n","import $ from '../$';\nimport { isString } from '../utils';\nimport './children';\nimport './eq';\nimport './get';\nimport './parent';\n$.fn.index = function (selector) {\n if (!arguments.length) {\n return this.eq(0).parent().children().get().indexOf(this[0]);\n }\n if (isString(selector)) {\n return $(selector).get().indexOf(this[0]);\n }\n return this.get().indexOf($(selector)[0]);\n};\n","import $ from '../$';\nimport './eq';\n$.fn.last = function () {\n return this.eq(-1);\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport dir from './utils/dir';\neach(['', 'All', 'Until'], (nameIndex, name) => {\n $.fn[`next${name}`] = function (selector, filter) {\n return dir(this, nameIndex, 'nextElementSibling', selector, filter);\n };\n});\n","import $ from '../$';\nimport './filter';\nimport './map';\n$.fn.not = function (selector) {\n const $excludes = this.filter(selector);\n return this.map((_, element) => $excludes.index(element) > -1 ? undefined : element);\n};\n","import $ from '../$';\nimport './css';\nimport './map';\n/**\n * 返回最近的用于定位的父元素\n */\n$.fn.offsetParent = function () {\n return this.map(function () {\n let offsetParent = this.offsetParent;\n while (offsetParent && $(offsetParent).css('position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || document.documentElement;\n });\n};\n","import $ from '../$';\nimport './css';\nimport './eq';\nimport './offset';\nimport './offsetParent';\nfunction floatStyle($element, name) {\n return parseFloat($element.css(name));\n}\n$.fn.position = function () {\n if (!this.length) {\n return undefined;\n }\n const $element = this.eq(0);\n let currentOffset;\n let parentOffset = {\n left: 0,\n top: 0,\n };\n if ($element.css('position') === 'fixed') {\n currentOffset = $element[0].getBoundingClientRect();\n }\n else {\n currentOffset = $element.offset();\n const $offsetParent = $element.offsetParent();\n parentOffset = $offsetParent.offset();\n parentOffset.top += floatStyle($offsetParent, 'border-top-width');\n parentOffset.left += floatStyle($offsetParent, 'border-left-width');\n }\n return {\n top: currentOffset.top - parentOffset.top - floatStyle($element, 'margin-top'),\n left: currentOffset.left -\n parentOffset.left -\n floatStyle($element, 'margin-left'),\n };\n};\n","import $ from '../$';\nimport extend from '../functions/extend';\nimport { isFunction } from '../utils';\nimport './css';\nimport './each';\nimport './position';\nfunction get(element) {\n if (!element.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n const rect = element.getBoundingClientRect();\n const win = element.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset,\n };\n}\nfunction set(element, value, index) {\n const $element = $(element);\n const position = $element.css('position');\n if (position === 'static') {\n $element.css('position', 'relative');\n }\n const currentOffset = get(element);\n const currentTopString = $element.css('top');\n const currentLeftString = $element.css('left');\n let currentTop;\n let currentLeft;\n const calculatePosition = (position === 'absolute' || position === 'fixed') &&\n (currentTopString + currentLeftString).indexOf('auto') > -1;\n if (calculatePosition) {\n const currentPosition = $element.position();\n currentTop = currentPosition.top;\n currentLeft = currentPosition.left;\n }\n else {\n currentTop = parseFloat(currentTopString);\n currentLeft = parseFloat(currentLeftString);\n }\n const computedValue = isFunction(value)\n ? value.call(element, index, extend({}, currentOffset))\n : value;\n $element.css({\n top: computedValue.top != null\n ? computedValue.top - currentOffset.top + currentTop\n : undefined,\n left: computedValue.left != null\n ? computedValue.left - currentOffset.left + currentLeft\n : undefined,\n });\n}\n$.fn.offset = function (value) {\n // 获取坐标\n if (!arguments.length) {\n if (!this.length) {\n return undefined;\n }\n return get(this[0]);\n }\n // 设置坐标\n return this.each(function (index) {\n set(this, value, index);\n });\n};\n","import $ from '../$';\nimport './on';\n$.fn.one = function (types, selector, data, callback) {\n // @ts-ignore\n return this.on(types, selector, data, callback, true);\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport './get';\nimport dir from './utils/dir';\neach(['', 'All', 'Until'], (nameIndex, name) => {\n $.fn[`prev${name}`] = function (selector, filter) {\n // prevAll、prevUntil 需要把元素的顺序倒序处理,以便和 jQuery 的结果一致\n const $nodes = !nameIndex ? this : $(this.get().reverse());\n return dir($nodes, nameIndex, 'previousElementSibling', selector, filter);\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport './each';\n$.fn.removeAttr = function (attributeName) {\n const names = attributeName.split(' ').filter((name) => name);\n return this.each(function () {\n each(names, (_, name) => {\n this.removeAttribute(name);\n });\n });\n};\n","import $ from '../$';\nimport removeData from '../functions/removeData';\nimport './each';\n$.fn.removeData = function (name) {\n return this.each(function () {\n removeData(this, name);\n });\n};\n","import $ from '../$';\nimport './each';\n$.fn.removeProp = function (name) {\n return this.each(function () {\n try {\n // @ts-ignore\n delete this[name];\n }\n catch (e) { }\n });\n};\n","import $ from '../$';\nimport './before';\nimport './clone';\nimport './each';\nimport './remove';\nimport { isFunction, isString } from '../utils';\n$.fn.replaceWith = function (newContent) {\n this.each((index, element) => {\n let content = newContent;\n if (isFunction(content)) {\n content = content.call(element, index, element.innerHTML);\n }\n else if (index && !isString(content)) {\n content = $(content).clone();\n }\n $(element).before(content);\n });\n return this.remove();\n};\n","import $ from '../$';\nimport './clone';\nimport './get';\nimport './map';\nimport './replaceWith';\n$.fn.replaceAll = function (target) {\n return $(target).map((index, element) => {\n $(element).replaceWith(index ? this.clone() : this);\n return this.get();\n });\n};\n","import $ from '../$';\nimport './each';\nimport './val';\n/**\n * 将表单元素的值组合成键值对数组\n * @returns {Array}\n */\n$.fn.serializeArray = function () {\n const result = [];\n this.each((_, element) => {\n const elements = element instanceof HTMLFormElement ? element.elements : [element];\n $(elements).each((_, element) => {\n const $element = $(element);\n const type = element.type;\n const nodeName = element.nodeName.toLowerCase();\n if (nodeName !== 'fieldset' &&\n element.name &&\n !element.disabled &&\n ['input', 'select', 'textarea', 'keygen'].indexOf(nodeName) > -1 &&\n ['submit', 'button', 'image', 'reset', 'file'].indexOf(type) === -1 &&\n (['radio', 'checkbox'].indexOf(type) === -1 ||\n element.checked)) {\n const value = $element.val();\n const valueArr = Array.isArray(value) ? value : [value];\n valueArr.forEach((value) => {\n result.push({\n name: element.name,\n value,\n });\n });\n }\n });\n });\n return result;\n};\n","import $ from '../$';\nimport param from '../functions/param';\nimport './serializeArray';\n$.fn.serialize = function () {\n return param(this.serializeArray());\n};\n","import $ from '../$';\nimport { getStyle } from '../utils';\nimport './each';\nconst elementDisplay = {};\n/**\n * 获取元素的初始 display 值,用于 .show() 方法\n * @param nodeName\n */\nfunction defaultDisplay(nodeName) {\n let element;\n let display;\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName);\n document.body.appendChild(element);\n display = getStyle(element, 'display');\n element.parentNode.removeChild(element);\n if (display === 'none') {\n display = 'block';\n }\n elementDisplay[nodeName] = display;\n }\n return elementDisplay[nodeName];\n}\n/**\n * 显示指定元素\n * @returns {JQ}\n */\n$.fn.show = function () {\n return this.each(function () {\n if (this.style.display === 'none') {\n this.style.display = '';\n }\n if (getStyle(this, 'display') === 'none') {\n this.style.display = defaultDisplay(this.nodeName);\n }\n });\n};\n","import $ from '../$';\nimport './add';\nimport './nextAll';\nimport './prevAll';\n/**\n * 取得同辈元素的集合\n * @param selector {String=}\n * @returns {JQ}\n */\n$.fn.siblings = function (selector) {\n return this.prevAll(selector).add(this.nextAll(selector));\n};\n","import $ from '../$';\nimport { getStyle } from '../utils';\nimport './each';\nimport './hide';\nimport './show';\n/**\n * 切换元素的显示状态\n */\n$.fn.toggle = function () {\n return this.each(function () {\n getStyle(this, 'display') === 'none' ? $(this).show() : $(this).hide();\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 强制重绘当前元素\n *\n * @example\n```js\n$('.box').reflow();\n```\n */\n reflow(): this;\n }\n}\n\n$.fn.reflow = function (this: JQ): JQ {\n return this.each(function () {\n return this.clientLeft;\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport { isNumber } from 'mdui.jq/es/utils';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 设置当前元素的 transition-duration 属性\n * @param duration 可以是带单位的值;若不带单位,则自动添加 `ms` 作为单位\n * @example\n```js\n$('.box').transition('300ms');\n$('.box').transition(300);\n```\n */\n transition(duration: string | number): this;\n }\n}\n\n$.fn.transition = function (this: JQ, duration: string | number): JQ {\n if (isNumber(duration)) {\n duration = `${duration}ms`;\n }\n\n return this.each(function () {\n this.style.webkitTransitionDuration = duration as string;\n this.style.transitionDuration = duration as string;\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport each from 'mdui.jq/es/functions/each';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/off';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 在当前元素上添加 transitionend 事件回调\n * @param callback 回调函数的参数为 `transitionend` 事件对象;`this` 指向当前元素\n * @example\n```js\n$('.box').transitionEnd(function() {\n alert('.box 元素的 transitionend 事件已触发');\n});\n```\n */\n transitionEnd(callback: (this: HTMLElement, e: Event) => void): this;\n }\n}\n\n$.fn.transitionEnd = function (\n this: JQ,\n callback: (this: HTMLElement, e: Event) => void,\n): JQ {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const events = ['webkitTransitionEnd', 'transitionend'];\n\n function fireCallback(this: Element | Document | Window, e: Event): void {\n if (e.target !== this) {\n return;\n }\n\n // @ts-ignore\n callback.call(this, e);\n\n each(events, (_, event) => {\n that.off(event, fireCallback);\n });\n }\n\n each(events, (_, event) => {\n that.on(event, fireCallback);\n });\n\n return this;\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 设置当前元素的 transform-origin 属性\n * @param transformOrigin\n * @example\n```js\n$('.box').transformOrigin('top center');\n```\n */\n transformOrigin(transformOrigin: string): this;\n }\n}\n\n$.fn.transformOrigin = function (this: JQ, transformOrigin: string): JQ {\n return this.each(function () {\n this.style.webkitTransformOrigin = transformOrigin;\n this.style.transformOrigin = transformOrigin;\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 设置当前元素的 transform 属性\n * @param transform\n * @example\n```js\n$('.box').transform('rotate(90deg)');\n```\n */\n transform(transform: string): this;\n }\n}\n\n$.fn.transform = function (this: JQ, transform: string): JQ {\n return this.each(function () {\n this.style.webkitTransform = transform;\n this.style.transform = transform;\n });\n};\n","import PlainObject from 'mdui.jq/es/interfaces/PlainObject';\nimport data from 'mdui.jq/es/functions/data';\n\ntype TYPE_API_INIT = (\n this: HTMLElement,\n i: number,\n element: HTMLElement,\n) => void;\n\n/**\n * CSS 选择器和初始化函数组成的对象\n */\nconst entries: PlainObject = {};\n\n/**\n * 注册并执行初始化函数\n * @param selector CSS 选择器\n * @param apiInit 初始化函数\n * @param i 元素索引\n * @param element 元素\n */\nfunction mutation(\n selector: string,\n apiInit: TYPE_API_INIT,\n i: number,\n element: HTMLElement,\n): void {\n let selectors = data(element, '_mdui_mutation');\n\n if (!selectors) {\n selectors = [];\n data(element, '_mdui_mutation', selectors);\n }\n\n if (selectors.indexOf(selector) === -1) {\n selectors.push(selector);\n apiInit.call(element, i, element);\n }\n}\n\nexport { TYPE_API_INIT, entries, mutation };\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport each from 'mdui.jq/es/functions/each';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/is';\nimport { entries, mutation } from '../../utils/mutation';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 执行在当前元素及其子元素内注册的初始化函数\n */\n mutation(): this;\n }\n}\n\n$.fn.mutation = function (this: JQ): JQ {\n return this.each((i, element) => {\n const $this = $(element);\n\n each(entries, (selector: string, apiInit) => {\n if ($this.is(selector)) {\n mutation(selector, apiInit, i, element);\n }\n\n $this.find(selector).each((i, element) => {\n mutation(selector, apiInit, i, element);\n });\n });\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/addClass';\nimport '../methods/reflow';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 创建并显示遮罩,返回遮罩层的 JQ 对象\n * @param zIndex 遮罩层的 `z-index` 值,默认为 `2000`\n * @example\n```js\n$.showOverlay();\n```\n * @example\n```js\n$.showOverlay(3000);\n```\n */\n showOverlay(zIndex?: number): JQ;\n }\n}\n\n$.showOverlay = function (zIndex?: number): JQ {\n let $overlay = $('.mdui-overlay');\n\n if ($overlay.length) {\n $overlay.data('_overlay_is_deleted', false);\n\n if (!isUndefined(zIndex)) {\n $overlay.css('z-index', zIndex);\n }\n } else {\n if (isUndefined(zIndex)) {\n zIndex = 2000;\n }\n\n $overlay = $('
')\n .appendTo(document.body)\n .reflow()\n .css('z-index', zIndex);\n }\n\n let level = $overlay.data('_overlay_level') || 0;\n\n return $overlay.data('_overlay_level', ++level).addClass('mdui-overlay-show');\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/remove';\nimport '../methods/transitionEnd';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 隐藏遮罩层\n *\n * 如果调用了多次 $.showOverlay() 来显示遮罩层,则也需要调用相同次数的 $.hideOverlay() 才能隐藏遮罩层。可以通过传入参数 true 来强制隐藏遮罩层。\n * @param force 是否强制隐藏遮罩\n * @example\n```js\n$.hideOverlay();\n```\n * @example\n```js\n$.hideOverlay(true);\n```\n */\n hideOverlay(force?: boolean): void;\n }\n}\n\n$.hideOverlay = function (force = false): void {\n const $overlay = $('.mdui-overlay');\n\n if (!$overlay.length) {\n return;\n }\n\n let level = force ? 1 : $overlay.data('_overlay_level');\n\n if (level > 1) {\n $overlay.data('_overlay_level', --level);\n return;\n }\n\n $overlay\n .data('_overlay_level', 0)\n .removeClass('mdui-overlay-show')\n .data('_overlay_is_deleted', true)\n .transitionEnd(() => {\n if ($overlay.data('_overlay_is_deleted')) {\n $overlay.remove();\n }\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/width';\nimport { $body } from '../../utils/dom';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 锁定屏页面,禁止页面滚动\n * @example\n```js\n$.lockScreen();\n```\n */\n lockScreen(): void;\n }\n}\n\n$.lockScreen = function (): void {\n // 不直接把 body 设为 box-sizing: border-box,避免污染全局样式\n const newBodyWidth = $body.width();\n let level = $body.data('_lockscreen_level') || 0;\n\n $body\n .addClass('mdui-locked')\n .width(newBodyWidth)\n .data('_lockscreen_level', ++level);\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/width';\nimport { $body } from '../../utils/dom';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 解除页面锁定\n *\n * 如果调用了多次 $.lockScreen() 来显示遮罩层,则也需要调用相同次数的 $.unlockScreen() 才能隐藏遮罩层。可以通过传入参数 true 来强制隐藏遮罩层。\n * @param force 是否强制解除锁定\n * @example\n```js\n$.unlockScreen();\n```\n * @example\n```js\n$.unlockScreen(true);\n```\n */\n unlockScreen(force?: boolean): void;\n }\n}\n\n$.unlockScreen = function (force = false): void {\n let level = force ? 1 : $body.data('_lockscreen_level');\n\n if (level > 1) {\n $body.data('_lockscreen_level', --level);\n return;\n }\n\n $body.data('_lockscreen_level', 0).removeClass('mdui-locked').width('');\n};\n","import $ from 'mdui.jq/es/$';\nimport { isNull } from 'mdui.jq/es/utils';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 函数节流\n * @param fn 执行的函数\n * @param delay 最多多少毫秒执行一次\n * @example\n```js\n$.throttle(function () {\n console.log('这个函数最多 100ms 执行一次');\n}, 100)\n```\n */\n throttle(fn: () => void, delay: number): () => void;\n }\n}\n\n$.throttle = function (fn: () => void, delay = 16): () => void {\n let timer: any = null;\n\n return function (this: any, ...args: any): void {\n if (isNull(timer)) {\n timer = setTimeout(() => {\n fn.apply(this, args);\n timer = null;\n }, delay);\n }\n };\n};\n","import $ from 'mdui.jq/es/$';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport PlainObject from 'mdui.jq/es/interfaces/PlainObject';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 生成一个全局唯一的 ID\n * @param name 当该参数值对应的 guid 不存在时,会生成一个新的 guid,并返回;当该参数对应的 guid 已存在,则直接返回已有 guid\n * @example\n```js\n$.guid();\n```\n * @example\n```js\n$.guid('test');\n```\n */\n guid(name?: string): string;\n }\n}\n\nconst GUID: PlainObject = {};\n\n$.guid = function (name?: string): string {\n if (!isUndefined(name) && !isUndefined(GUID[name])) {\n return GUID[name];\n }\n\n function s4(): string {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n\n const guid =\n '_' +\n s4() +\n s4() +\n '-' +\n s4() +\n '-' +\n s4() +\n '-' +\n s4() +\n '-' +\n s4() +\n s4() +\n s4();\n\n if (!isUndefined(name)) {\n GUID[name] = guid;\n }\n\n return guid;\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/each';\nimport mdui from '../mdui';\nimport '../jq_extends/methods/mutation';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport { TYPE_API_INIT, entries, mutation } from '../utils/mutation';\n\ndeclare module '../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 传入了两个参数时,注册并执行初始化函数\n *\n * 没有传入参数时,执行初始化\n * @param selector CSS 选择器\n * @param apiInit 初始化函数\n * @example\n```js\nmdui.mutation();\n```\n * @example\n```js\nmdui.mutation();\n```\n */\n mutation(selector?: string, apiInit?: TYPE_API_INIT): void;\n }\n}\n\nmdui.mutation = function (selector?: string, apiInit?: TYPE_API_INIT): void {\n if (isUndefined(selector) || isUndefined(apiInit)) {\n $(document).mutation();\n return;\n }\n\n entries[selector] = apiInit!;\n $(selector).each((i, element) => mutation(selector, apiInit, i, element));\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport PlainObject from 'mdui.jq/es/interfaces/PlainObject';\nimport 'mdui.jq/es/methods/trigger';\n\n/**\n * 触发组件上的事件\n * @param eventName 事件名\n * @param componentName 组件名\n * @param target 在该元素上触发事件\n * @param instance 组件实例\n * @param parameters 事件参数\n */\nfunction componentEvent(\n eventName: string,\n componentName: string,\n target: HTMLElement | HTMLElement[] | JQ,\n instance?: any,\n parameters?: PlainObject,\n): void {\n if (!parameters) {\n parameters = {};\n }\n\n // @ts-ignore\n parameters.inst = instance;\n\n const fullEventName = `${eventName}.mdui.${componentName}`;\n\n // jQuery 事件\n // @ts-ignore\n if (typeof jQuery !== 'undefined') {\n // @ts-ignore\n jQuery(target).trigger(fullEventName, parameters);\n }\n\n const $target = $(target);\n\n // mdui.jq 事件\n $target.trigger(fullEventName, parameters);\n\n // 原生事件,供使用 addEventListener 监听\n type EventParams = {\n detail?: any;\n bubbles: boolean;\n cancelable: boolean;\n };\n\n const eventParams: EventParams = {\n bubbles: true,\n cancelable: true,\n detail: parameters,\n };\n\n const eventObject: CustomEvent = new CustomEvent(fullEventName, eventParams);\n\n // @ts-ignore\n eventObject._detail = parameters;\n\n $target[0].dispatchEvent(eventObject);\n}\n\nexport { componentEvent };\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isNumber } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transitionEnd';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $window } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * Headroom 插件\n *\n * 请通过 `new mdui.Headroom()` 调用\n */\n Headroom: {\n /**\n * 实例化 Headroom 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Headroom;\n };\n }\n}\n\ntype TOLERANCE = {\n /**\n * 滚动条向下滚动多少距离开始隐藏或显示元素\n */\n down: number;\n\n /**\n * 滚动条向上滚动多少距离开始隐藏或显示元素\n */\n up: number;\n};\n\ntype OPTIONS = {\n /**\n * 滚动条滚动多少距离开始隐藏或显示元素\n */\n tolerance?: TOLERANCE | number;\n\n /**\n * 在页面顶部多少距离内滚动不会隐藏元素\n */\n offset?: number;\n\n /**\n * 初始化时添加的类\n */\n initialClass?: string;\n\n /**\n * 元素固定时添加的类\n */\n pinnedClass?: string;\n\n /**\n * 元素隐藏时添加的类\n */\n unpinnedClass?: string;\n};\n\ntype STATE = 'pinning' | 'pinned' | 'unpinning' | 'unpinned';\ntype EVENT = 'pin' | 'pinned' | 'unpin' | 'unpinned';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n tolerance: 5,\n offset: 0,\n initialClass: 'mdui-headroom',\n pinnedClass: 'mdui-headroom-pinned-top',\n unpinnedClass: 'mdui-headroom-unpinned-top',\n};\n\nclass Headroom {\n /**\n * headroom 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 headroom 的状态\n */\n private state: STATE = 'pinned';\n\n /**\n * 当前是否启用\n */\n private isEnable = false;\n\n /**\n * 上次滚动后,垂直方向的距离\n */\n private lastScrollY = 0;\n\n /**\n * AnimationFrame ID\n */\n private rafId = 0;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$element = $(selector).first();\n\n extend(this.options, options);\n\n // tolerance 参数若为数值,转换为对象\n const tolerance = this.options.tolerance;\n if (isNumber(tolerance)) {\n this.options.tolerance = {\n down: tolerance,\n up: tolerance,\n };\n }\n\n this.enable();\n }\n\n /**\n * 滚动时的处理\n */\n private onScroll(): void {\n this.rafId = window.requestAnimationFrame(() => {\n const currentScrollY = window.pageYOffset;\n const direction = currentScrollY > this.lastScrollY ? 'down' : 'up';\n const tolerance = (this.options.tolerance as TOLERANCE)[direction];\n const scrolled = Math.abs(currentScrollY - this.lastScrollY);\n const toleranceExceeded = scrolled >= tolerance;\n\n if (\n currentScrollY > this.lastScrollY &&\n currentScrollY >= this.options.offset! &&\n toleranceExceeded\n ) {\n this.unpin();\n } else if (\n (currentScrollY < this.lastScrollY && toleranceExceeded) ||\n currentScrollY <= this.options.offset!\n ) {\n this.pin();\n }\n\n this.lastScrollY = currentScrollY;\n });\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'headroom', this.$element, this);\n }\n\n /**\n * 动画结束的回调\n */\n private transitionEnd(): void {\n if (this.state === 'pinning') {\n this.state = 'pinned';\n this.triggerEvent('pinned');\n }\n\n if (this.state === 'unpinning') {\n this.state = 'unpinned';\n this.triggerEvent('unpinned');\n }\n }\n\n /**\n * 使元素固定住\n */\n public pin(): void {\n if (\n this.state === 'pinning' ||\n this.state === 'pinned' ||\n !this.$element.hasClass(this.options.initialClass!)\n ) {\n return;\n }\n\n this.triggerEvent('pin');\n this.state = 'pinning';\n this.$element\n .removeClass(this.options.unpinnedClass)\n .addClass(this.options.pinnedClass!)\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 使元素隐藏\n */\n public unpin(): void {\n if (\n this.state === 'unpinning' ||\n this.state === 'unpinned' ||\n !this.$element.hasClass(this.options.initialClass!)\n ) {\n return;\n }\n\n this.triggerEvent('unpin');\n this.state = 'unpinning';\n this.$element\n .removeClass(this.options.pinnedClass)\n .addClass(this.options.unpinnedClass!)\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 启用 headroom 插件\n */\n public enable(): void {\n if (this.isEnable) {\n return;\n }\n\n this.isEnable = true;\n this.state = 'pinned';\n this.$element\n .addClass(this.options.initialClass!)\n .removeClass(this.options.pinnedClass)\n .removeClass(this.options.unpinnedClass);\n this.lastScrollY = window.pageYOffset;\n\n $window.on('scroll', () => this.onScroll());\n }\n\n /**\n * 禁用 headroom 插件\n */\n public disable(): void {\n if (!this.isEnable) {\n return;\n }\n\n this.isEnable = false;\n this.$element\n .removeClass(this.options.initialClass)\n .removeClass(this.options.pinnedClass)\n .removeClass(this.options.unpinnedClass);\n\n $window.off('scroll', () => this.onScroll());\n window.cancelAnimationFrame(this.rafId);\n }\n\n /**\n * 获取当前状态。共包含四种状态:`pinning`、`pinned`、`unpinning`、`unpinned`\n */\n public getState(): STATE {\n return this.state;\n }\n}\n\nmdui.Headroom = Headroom;\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/attr';\nimport PlainObject from 'mdui.jq/es/interfaces/PlainObject';\n\n/**\n * 解析 DATA API 参数\n * @param element 元素\n * @param name 属性名\n */\nfunction parseOptions(element: HTMLElement, name: string): PlainObject {\n const attr = $(element).attr(name);\n\n if (!attr) {\n return {};\n }\n\n return new Function(\n '',\n `var json = ${attr}; return JSON.parse(JSON.stringify(json));`,\n )();\n}\n\nexport { parseOptions };\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-headroom';\n\n$(() => {\n mdui.mutation(`[${customAttr}]`, function () {\n new mdui.Headroom(this, parseOptions(this, customAttr));\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/eq';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isNumber } from 'mdui.jq/es/utils';\nimport '../../jq_extends/methods/reflow';\nimport '../../jq_extends/methods/transition';\nimport '../../jq_extends/methods/transitionEnd';\nimport { componentEvent } from '../../utils/componentEvent';\n\ntype OPTIONS = {\n /**\n * 是否启用手风琴效果\n * 为 `true` 时,最多只能有一个面板项处于打开状态,打开一个面板项时会关闭其他面板项\n * 为 `false` 时,可同时打开多个面板项\n */\n accordion?: boolean;\n};\n\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n accordion: false,\n};\n\nabstract class CollapseAbstract {\n /**\n * collapse 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * item 的 class 名\n */\n private classItem: string;\n\n /**\n * 打开状态的 item 的 class 名\n */\n private classItemOpen: string;\n\n /**\n * item-header 的 class 名\n */\n private classHeader: string;\n\n /**\n * item-body 的 class 名\n */\n private classBody: string;\n\n /**\n * 获取继承的组件名称\n */\n protected abstract getNamespace(): string;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n // CSS 类名\n const classPrefix = `mdui-${this.getNamespace()}-item`;\n this.classItem = classPrefix;\n this.classItemOpen = `${classPrefix}-open`;\n this.classHeader = `${classPrefix}-header`;\n this.classBody = `${classPrefix}-body`;\n\n this.$element = $(selector).first();\n\n extend(this.options, options);\n\n this.bindEvent();\n }\n\n /**\n * 绑定事件\n */\n private bindEvent(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const $items = this.getItems();\n\n // 点击 header 时,打开/关闭 item\n this.$element.on('click', `.${this.classHeader}`, function () {\n const $header = $(this as HTMLElement);\n const $item = $header.parent();\n\n $items.each((_, item) => {\n if ($item.is(item)) {\n that.toggle(item);\n }\n });\n });\n\n // 点击关闭按钮时,关闭 item\n this.$element.on(\n 'click',\n `[mdui-${this.getNamespace()}-item-close]`,\n function () {\n const $target = $(this as HTMLElement);\n const $item = $target.parents(`.${that.classItem}`).first();\n\n that.close($item);\n },\n );\n }\n\n /**\n * 指定 item 是否处于打开状态\n * @param $item\n */\n private isOpen($item: JQ): boolean {\n return $item.hasClass(this.classItemOpen);\n }\n\n /**\n * 获取所有 item\n */\n private getItems(): JQ {\n return this.$element.children(`.${this.classItem}`);\n }\n\n /**\n * 获取指定 item\n * @param item\n */\n private getItem(\n item: number | Selector | HTMLElement | ArrayLike,\n ): JQ {\n if (isNumber(item)) {\n return this.getItems().eq(item);\n }\n\n return $(item).first();\n }\n\n /**\n * 触发组件事件\n * @param name 事件名\n * @param $item 事件触发的目标 item\n */\n private triggerEvent(name: EVENT, $item: JQ): void {\n componentEvent(name, this.getNamespace(), $item, this);\n }\n\n /**\n * 动画结束回调\n * @param $content body 元素\n * @param $item item 元素\n */\n private transitionEnd($content: JQ, $item: JQ): void {\n if (this.isOpen($item)) {\n $content.transition(0).height('auto').reflow().transition('');\n\n this.triggerEvent('opened', $item);\n } else {\n $content.height('');\n\n this.triggerEvent('closed', $item);\n }\n }\n\n /**\n * 打开指定面板项\n * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象\n */\n public open(\n item: number | Selector | HTMLElement | ArrayLike,\n ): void {\n const $item = this.getItem(item);\n\n if (this.isOpen($item)) {\n return;\n }\n\n // 关闭其他项\n if (this.options.accordion) {\n this.$element.children(`.${this.classItemOpen}`).each((_, element) => {\n const $element = $(element);\n\n if (!$element.is($item)) {\n this.close($element);\n }\n });\n }\n\n const $content = $item.children(`.${this.classBody}`);\n\n $content\n .height($content[0].scrollHeight)\n .transitionEnd(() => this.transitionEnd($content, $item));\n\n this.triggerEvent('open', $item);\n\n $item.addClass(this.classItemOpen);\n }\n\n /**\n * 关闭指定面板项\n * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象\n */\n public close(\n item: number | Selector | HTMLElement | ArrayLike,\n ): void {\n const $item = this.getItem(item);\n\n if (!this.isOpen($item)) {\n return;\n }\n\n const $content = $item.children(`.${this.classBody}`);\n\n this.triggerEvent('close', $item);\n\n $item.removeClass(this.classItemOpen);\n\n $content\n .transition(0)\n .height($content[0].scrollHeight)\n .reflow()\n .transition('')\n .height('')\n .transitionEnd(() => this.transitionEnd($content, $item));\n }\n\n /**\n * 切换指定面板项的打开状态\n * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象\n */\n public toggle(\n item: number | Selector | HTMLElement | ArrayLike,\n ): void {\n const $item = this.getItem(item);\n\n this.isOpen($item) ? this.close($item) : this.open($item);\n }\n\n /**\n * 打开所有面板项\n */\n public openAll(): void {\n this.getItems().each((_, element) => this.open(element));\n }\n\n /**\n * 关闭所有面板项\n */\n public closeAll(): void {\n this.getItems().each((_, element) => this.close(element));\n }\n}\n\nexport { OPTIONS, CollapseAbstract };\n","import Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport { CollapseAbstract, OPTIONS } from './collapseAbstract';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 折叠内容块组件\n *\n * 请通过 `new mdui.Collapse()` 调用\n */\n Collapse: {\n /**\n * 实例化 Collapse 组件\n * @param selector CSS 选择器或 DOM 元素\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Collapse;\n };\n }\n}\n\nclass Collapse extends CollapseAbstract {\n protected getNamespace(): string {\n return 'collapse';\n }\n}\n\nmdui.Collapse = Collapse;\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-collapse';\n\n$(() => {\n mdui.mutation(`[${customAttr}]`, function () {\n new mdui.Collapse(this, parseOptions(this, customAttr));\n });\n});\n","import Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport { CollapseAbstract, OPTIONS } from '../collapse/collapseAbstract';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 可扩展面板组件\n *\n * 请通过 `new mdui.Panel()` 调用\n */\n Panel: {\n /**\n * 实例化 Panel 组件\n * @param selector CSS 选择器或 DOM 元素\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Panel;\n };\n }\n}\n\nclass Panel extends CollapseAbstract {\n protected getNamespace(): string {\n return 'panel';\n }\n}\n\nmdui.Panel = Panel;\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-panel';\n\n$(() => {\n mdui.mutation(`[${customAttr}]`, function () {\n new mdui.Panel(this, parseOptions(this, customAttr));\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/add';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/eq';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/prependTo';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 动态修改了表格后,需要调用该方法重新初始化表格。\n *\n * 若传入了参数,则只初始化该参数对应的表格。若没有传入参数,则重新初始化所有表格。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateTables(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\nclass Table {\n /**\n * table 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 表头 tr 元素\n */\n private $thRow: JQ = $();\n\n /**\n * 表格 body 中的 tr 元素\n */\n private $tdRows: JQ = $();\n\n /**\n * 表头的 checkbox 元素\n */\n private $thCheckbox: JQ = $();\n\n /**\n * 表格 body 中的 checkbox 元素\n */\n private $tdCheckboxs: JQ = $();\n\n /**\n * 表格行是否可选择\n */\n private selectable = false;\n\n /**\n * 已选中的行数\n */\n private selectedRow = 0;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n ) {\n this.$element = $(selector).first();\n this.init();\n }\n\n /**\n * 初始化表格\n */\n public init(): void {\n this.$thRow = this.$element.find('thead tr');\n this.$tdRows = this.$element.find('tbody tr');\n this.selectable = this.$element.hasClass('mdui-table-selectable');\n\n this.updateThCheckbox();\n this.updateTdCheckbox();\n this.updateNumericCol();\n }\n\n /**\n * 生成 checkbox 的 HTML 结构\n * @param tag 标签名\n */\n private createCheckboxHTML(tag: string): string {\n return (\n `<${tag} class=\"mdui-table-cell-checkbox\">` +\n '' +\n ``\n );\n }\n\n /**\n * 更新表头 checkbox 的状态\n */\n private updateThCheckboxStatus(): void {\n const checkbox = this.$thCheckbox[0];\n const selectedRow = this.selectedRow;\n const tdRowsLength = this.$tdRows.length;\n\n checkbox.checked = selectedRow === tdRowsLength;\n checkbox.indeterminate = !!selectedRow && selectedRow !== tdRowsLength;\n }\n\n /**\n * 更新表格行的 checkbox\n */\n private updateTdCheckbox(): void {\n const rowSelectedClass = 'mdui-table-row-selected';\n\n this.$tdRows.each((_, row) => {\n const $row = $(row);\n\n // 移除旧的 checkbox\n $row.find('.mdui-table-cell-checkbox').remove();\n\n if (!this.selectable) {\n return;\n }\n\n // 创建 DOM\n const $checkbox = $(this.createCheckboxHTML('td'))\n .prependTo($row)\n .find('input[type=\"checkbox\"]') as JQ;\n\n // 默认选中的行\n if ($row.hasClass(rowSelectedClass)) {\n $checkbox[0].checked = true;\n this.selectedRow++;\n }\n\n this.updateThCheckboxStatus();\n\n // 绑定事件\n $checkbox.on('change', () => {\n if ($checkbox[0].checked) {\n $row.addClass(rowSelectedClass);\n this.selectedRow++;\n } else {\n $row.removeClass(rowSelectedClass);\n this.selectedRow--;\n }\n\n this.updateThCheckboxStatus();\n });\n\n this.$tdCheckboxs = this.$tdCheckboxs.add($checkbox);\n });\n }\n\n /**\n * 更新表头的 checkbox\n */\n private updateThCheckbox(): void {\n // 移除旧的 checkbox\n this.$thRow.find('.mdui-table-cell-checkbox').remove();\n\n if (!this.selectable) {\n return;\n }\n\n this.$thCheckbox = $(this.createCheckboxHTML('th'))\n .prependTo(this.$thRow)\n .find('input[type=\"checkbox\"]')\n .on('change', () => {\n const isCheckedAll = this.$thCheckbox[0].checked;\n this.selectedRow = isCheckedAll ? this.$tdRows.length : 0;\n\n this.$tdCheckboxs.each((_, checkbox) => {\n checkbox.checked = isCheckedAll;\n });\n\n this.$tdRows.each((_, row) => {\n isCheckedAll\n ? $(row).addClass('mdui-table-row-selected')\n : $(row).removeClass('mdui-table-row-selected');\n });\n }) as JQ;\n }\n\n /**\n * 更新数值列\n */\n private updateNumericCol(): void {\n const numericClass = 'mdui-table-col-numeric';\n\n this.$thRow.find('th').each((i, th) => {\n const isNumericCol = $(th).hasClass(numericClass);\n\n this.$tdRows.each((_, row) => {\n const $td = $(row).find('td').eq(i);\n\n isNumericCol\n ? $td.addClass(numericClass)\n : $td.removeClass(numericClass);\n });\n });\n }\n}\n\nconst dataName = '_mdui_table';\n\n$(() => {\n mdui.mutation('.mdui-table', function () {\n const $element = $(this);\n\n if (!$element.data(dataName)) {\n $element.data(dataName, new Table($element));\n }\n });\n});\n\nmdui.updateTables = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-table') : $(selector);\n\n $elements.each((_, element) => {\n const $element = $(element);\n const instance = $element.data(dataName);\n\n if (instance) {\n instance.init();\n } else {\n $element.data(dataName, new Table($element));\n }\n });\n};\n","/**\n * touch 事件后的 500ms 内禁用 mousedown 事件\n *\n * 不支持触控的屏幕上事件顺序为 mousedown -> mouseup -> click\n * 支持触控的屏幕上事件顺序为 touchstart -> touchend -> mousedown -> mouseup -> click\n *\n * 在每一个事件中都使用 TouchHandler.isAllow(event) 判断事件是否可执行\n * 在 touchstart 和 touchmove、touchend、touchcancel\n *\n * (function () {\n * $document\n * .on(start, function (e) {\n * if (!isAllow(e)) {\n * return;\n * }\n * register(e);\n * console.log(e.type);\n * })\n * .on(move, function (e) {\n * if (!isAllow(e)) {\n * return;\n * }\n * console.log(e.type);\n * })\n * .on(end, function (e) {\n * if (!isAllow(e)) {\n * return;\n * }\n * console.log(e.type);\n * })\n * .on(unlock, register);\n * })();\n */\n\nconst startEvent = 'touchstart mousedown';\nconst moveEvent = 'touchmove mousemove';\nconst endEvent = 'touchend mouseup';\nconst cancelEvent = 'touchcancel mouseleave';\nconst unlockEvent = 'touchend touchmove touchcancel';\n\nlet touches = 0;\n\n/**\n * 该事件是否被允许,在执行事件前调用该方法判断事件是否可以执行\n * 若已触发 touch 事件,则阻止之后的鼠标事件\n * @param event\n */\nfunction isAllow(event: Event): boolean {\n return !(\n touches &&\n [\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'click',\n 'mouseover',\n 'mouseout',\n 'mouseenter',\n 'mouseleave',\n ].indexOf(event.type) > -1\n );\n}\n\n/**\n * 在 touchstart 和 touchmove、touchend、touchcancel 事件中调用该方法注册事件\n * @param event\n */\nfunction register(event: Event): void {\n if (event.type === 'touchstart') {\n // 触发了 touch 事件\n touches += 1;\n } else if (\n ['touchmove', 'touchend', 'touchcancel'].indexOf(event.type) > -1\n ) {\n // touch 事件结束 500ms 后解除对鼠标事件的阻止\n setTimeout(function () {\n if (touches) {\n touches -= 1;\n }\n }, 500);\n }\n}\n\nexport {\n startEvent,\n moveEvent,\n endEvent,\n cancelEvent,\n unlockEvent,\n isAllow,\n register,\n};\n","/**\n * Inspired by https://github.com/nolimits4web/Framework7/blob/master/src/js/fast-clicks.js\n * https://github.com/nolimits4web/Framework7/blob/master/LICENSE\n *\n * Inspired by https://github.com/fians/Waves\n */\n\nimport $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/innerHeight';\nimport 'mdui.jq/es/methods/innerWidth';\nimport 'mdui.jq/es/methods/off';\nimport 'mdui.jq/es/methods/offset';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/prependTo';\nimport 'mdui.jq/es/methods/prop';\nimport 'mdui.jq/es/methods/remove';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport '../../jq_extends/methods/reflow';\nimport '../../jq_extends/methods/transform';\nimport '../../jq_extends/methods/transitionEnd';\nimport { $document } from '../../utils/dom';\nimport {\n cancelEvent,\n endEvent,\n isAllow,\n moveEvent,\n register,\n startEvent,\n unlockEvent,\n} from '../../utils/touchHandler';\n\n/**\n * 显示涟漪动画\n * @param event\n * @param $ripple\n */\nfunction show(event: Event, $ripple: JQ): void {\n // 鼠标右键不产生涟漪\n if (event instanceof MouseEvent && event.button === 2) {\n return;\n }\n\n // 点击位置坐标\n const touchPosition =\n typeof TouchEvent !== 'undefined' &&\n event instanceof TouchEvent &&\n event.touches.length\n ? event.touches[0]\n : (event as MouseEvent);\n\n const touchStartX = touchPosition.pageX;\n const touchStartY = touchPosition.pageY;\n\n // 涟漪位置\n const offset = $ripple.offset();\n const height = $ripple.innerHeight();\n const width = $ripple.innerWidth();\n const center = {\n x: touchStartX - offset.left,\n y: touchStartY - offset.top,\n };\n const diameter = Math.max(\n Math.pow(Math.pow(height, 2) + Math.pow(width, 2), 0.5),\n 48,\n );\n\n // 涟漪扩散动画\n const translate =\n `translate3d(${-center.x + width / 2}px,` +\n `${-center.y + height / 2}px, 0) scale(1)`;\n\n // 涟漪的 DOM 结构,并缓存动画效果\n $(\n `
`,\n )\n .data('_ripple_wave_translate', translate)\n .prependTo($ripple)\n .reflow()\n .transform(translate);\n}\n\n/**\n * 隐藏并移除涟漪\n * @param $wave\n */\nfunction removeRipple($wave: JQ): void {\n if (!$wave.length || $wave.data('_ripple_wave_removed')) {\n return;\n }\n\n $wave.data('_ripple_wave_removed', true);\n\n let removeTimer = setTimeout(() => $wave.remove(), 400);\n const translate = $wave.data('_ripple_wave_translate');\n\n $wave\n .addClass('mdui-ripple-wave-fill')\n .transform(translate.replace('scale(1)', 'scale(1.01)'))\n .transitionEnd(() => {\n clearTimeout(removeTimer);\n\n $wave\n .addClass('mdui-ripple-wave-out')\n .transform(translate.replace('scale(1)', 'scale(1.01)'));\n\n removeTimer = setTimeout(() => $wave.remove(), 700);\n\n setTimeout(() => {\n $wave.transitionEnd(() => {\n clearTimeout(removeTimer);\n $wave.remove();\n });\n }, 0);\n });\n}\n\n/**\n * 隐藏涟漪动画\n * @param this\n */\nfunction hide(this: any): void {\n const $ripple = $(this as HTMLElement);\n\n $ripple.children('.mdui-ripple-wave').each((_, wave) => {\n removeRipple($(wave));\n });\n\n $ripple.off(`${moveEvent} ${endEvent} ${cancelEvent}`, hide);\n}\n\n/**\n * 显示涟漪,并绑定 touchend 等事件\n * @param event\n */\nfunction showRipple(event: Event): void {\n if (!isAllow(event)) {\n return;\n }\n\n register(event);\n\n // Chrome 59 点击滚动条时,会在 document 上触发事件\n if (event.target === document) {\n return;\n }\n\n const $target = $(event.target as HTMLElement);\n\n // 获取含 .mdui-ripple 类的元素\n const $ripple = $target.hasClass('mdui-ripple')\n ? $target\n : $target.parents('.mdui-ripple').first();\n\n if (!$ripple.length) {\n return;\n }\n\n // 禁用状态的元素上不产生涟漪效果\n if ($ripple.prop('disabled') || !isUndefined($ripple.attr('disabled'))) {\n return;\n }\n\n if (event.type === 'touchstart') {\n let hidden = false;\n\n // touchstart 触发指定时间后开始涟漪动画,避免手指滑动时也触发涟漪\n let timer = setTimeout(() => {\n timer = 0;\n show(event, $ripple);\n }, 200);\n\n const hideRipple = (): void => {\n // 如果手指没有移动,且涟漪动画还没有开始,则开始涟漪动画\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n show(event, $ripple);\n }\n\n if (!hidden) {\n hidden = true;\n hide.call($ripple);\n }\n };\n\n // 手指移动后,移除涟漪动画\n const touchMove = (): void => {\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n\n hideRipple();\n };\n\n $ripple.on('touchmove', touchMove).on('touchend touchcancel', hideRipple);\n } else {\n show(event, $ripple);\n $ripple.on(`${moveEvent} ${endEvent} ${cancelEvent}`, hide);\n }\n}\n\n$(() => {\n $document.on(startEvent, showRipple).on(unlockEvent, register);\n});\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/outerHeight';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/text';\nimport 'mdui.jq/es/methods/trigger';\nimport 'mdui.jq/es/methods/val';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { $document } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 动态修改了文本框后,需要调用该方法重新初始化文本框。\n *\n * 若传入了参数,则只初始化该参数对应的文本框。若没有传入参数,则重新初始化所有文本框。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateTextFields(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\ntype INPUT_EVENT_DATA = {\n reInit?: boolean;\n domLoadedEvent?: boolean;\n};\n\nconst defaultData: INPUT_EVENT_DATA = {\n reInit: false,\n domLoadedEvent: false,\n};\n\n/**\n * 输入框事件\n * @param event\n * @param data\n */\nfunction inputEvent(event: Event, data: INPUT_EVENT_DATA = {}): void {\n data = extend({}, defaultData, data);\n\n const input = event.target as HTMLInputElement;\n const $input = $(input);\n const eventType = event.type;\n const value = $input.val() as string;\n\n // 文本框类型\n const inputType = $input.attr('type') || '';\n if (\n ['checkbox', 'button', 'submit', 'range', 'radio', 'image'].indexOf(\n inputType,\n ) > -1\n ) {\n return;\n }\n\n const $textfield = $input.parent('.mdui-textfield');\n\n // 输入框是否聚焦\n if (eventType === 'focus') {\n $textfield.addClass('mdui-textfield-focus');\n }\n\n if (eventType === 'blur') {\n $textfield.removeClass('mdui-textfield-focus');\n }\n\n // 输入框是否为空\n if (eventType === 'blur' || eventType === 'input') {\n value\n ? $textfield.addClass('mdui-textfield-not-empty')\n : $textfield.removeClass('mdui-textfield-not-empty');\n }\n\n // 输入框是否禁用\n input.disabled\n ? $textfield.addClass('mdui-textfield-disabled')\n : $textfield.removeClass('mdui-textfield-disabled');\n\n // 表单验证\n if (\n (eventType === 'input' || eventType === 'blur') &&\n !data.domLoadedEvent &&\n input.validity\n ) {\n input.validity.valid\n ? $textfield.removeClass('mdui-textfield-invalid-html5')\n : $textfield.addClass('mdui-textfield-invalid-html5');\n }\n\n // textarea 高度自动调整\n if ($input.is('textarea')) {\n // IE bug:textarea 的值仅为多个换行,不含其他内容时,textarea 的高度不准确\n // 此时,在计算高度前,在值的开头加入一个空格,计算完后,移除空格\n const inputValue = value;\n let hasExtraSpace = false;\n\n if (inputValue.replace(/[\\r\\n]/g, '') === '') {\n $input.val(' ' + inputValue);\n hasExtraSpace = true;\n }\n\n // 设置 textarea 高度\n $input.outerHeight('');\n const height = $input.outerHeight();\n const scrollHeight = input.scrollHeight;\n\n if (scrollHeight > height) {\n $input.outerHeight(scrollHeight);\n }\n\n // 计算完,还原 textarea 的值\n if (hasExtraSpace) {\n $input.val(inputValue);\n }\n }\n\n // 实时字数统计\n if (data.reInit) {\n $textfield.find('.mdui-textfield-counter').remove();\n }\n\n const maxLength = $input.attr('maxlength');\n if (maxLength) {\n if (data.reInit || data.domLoadedEvent) {\n $(\n '
' +\n ` / ${maxLength}` +\n '
',\n ).appendTo($textfield);\n }\n\n $textfield\n .find('.mdui-textfield-counter-inputed')\n .text(value.length.toString());\n }\n\n // 含 帮助文本、错误提示、字数统计 时,增加文本框底部内边距\n if (\n $textfield.find('.mdui-textfield-helper').length ||\n $textfield.find('.mdui-textfield-error').length ||\n maxLength\n ) {\n $textfield.addClass('mdui-textfield-has-bottom');\n }\n}\n\n$(() => {\n // 绑定事件\n $document.on(\n 'input focus blur',\n '.mdui-textfield-input',\n { useCapture: true },\n inputEvent,\n );\n\n // 可展开文本框展开\n $document.on(\n 'click',\n '.mdui-textfield-expandable .mdui-textfield-icon',\n function () {\n $(this as HTMLElement)\n .parents('.mdui-textfield')\n .addClass('mdui-textfield-expanded')\n .find('.mdui-textfield-input')[0]\n .focus();\n },\n );\n\n // 可展开文本框关闭\n $document.on(\n 'click',\n '.mdui-textfield-expanded .mdui-textfield-close',\n function () {\n $(this)\n .parents('.mdui-textfield')\n .removeClass('mdui-textfield-expanded')\n .find('.mdui-textfield-input')\n .val('');\n },\n );\n\n /**\n * 初始化文本框\n */\n mdui.mutation('.mdui-textfield', function () {\n $(this).find('.mdui-textfield-input').trigger('input', {\n domLoadedEvent: true,\n });\n });\n});\n\nmdui.updateTextFields = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-textfield') : $(selector);\n\n $elements.each((_, element) => {\n $(element).find('.mdui-textfield-input').trigger('input', {\n reInit: true,\n });\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/append';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/empty';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/text';\nimport 'mdui.jq/es/methods/val';\nimport 'mdui.jq/es/methods/width';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport {\n endEvent,\n isAllow,\n register,\n startEvent,\n unlockEvent,\n} from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 动态修改了滑块后,需要调用该方法重新初始化滑块\n *\n * 若传入了参数,则只初始化该参数对应的滑块。若没有传入参数,则重新初始化所有滑块。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateSliders(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\n/**\n * 滑块的值改变后修改滑块样式\n * @param $slider\n */\nfunction updateValueStyle($slider: JQ): void {\n const data = $slider.data();\n\n const $track = data._slider_$track;\n const $fill = data._slider_$fill;\n const $thumb = data._slider_$thumb;\n const $input = data._slider_$input;\n const min = data._slider_min;\n const max = data._slider_max;\n const isDisabled = data._slider_disabled;\n const isDiscrete = data._slider_discrete;\n const $thumbText = data._slider_$thumbText;\n const value = $input.val();\n const percent = ((value - min) / (max - min)) * 100;\n\n $fill.width(`${percent}%`);\n $track.width(`${100 - percent}%`);\n\n if (isDisabled) {\n $fill.css('padding-right', '6px');\n $track.css('padding-left', '6px');\n }\n\n $thumb.css('left', `${percent}%`);\n\n if (isDiscrete) {\n $thumbText.text(value);\n }\n\n percent === 0\n ? $slider.addClass('mdui-slider-zero')\n : $slider.removeClass('mdui-slider-zero');\n}\n\n/**\n * 重新初始化滑块\n * @param $slider\n */\nfunction reInit($slider: JQ): void {\n const $track = $('
');\n const $fill = $('
');\n const $thumb = $('
');\n const $input = $slider.find('input[type=\"range\"]') as JQ;\n const isDisabled = $input[0].disabled;\n const isDiscrete = $slider.hasClass('mdui-slider-discrete');\n\n // 禁用状态\n isDisabled\n ? $slider.addClass('mdui-slider-disabled')\n : $slider.removeClass('mdui-slider-disabled');\n\n // 重新填充 HTML\n $slider.find('.mdui-slider-track').remove();\n $slider.find('.mdui-slider-fill').remove();\n $slider.find('.mdui-slider-thumb').remove();\n $slider.append($track).append($fill).append($thumb);\n\n // 间续型滑块\n let $thumbText = $();\n if (isDiscrete) {\n $thumbText = $('');\n $thumb.empty().append($thumbText);\n }\n\n $slider.data('_slider_$track', $track);\n $slider.data('_slider_$fill', $fill);\n $slider.data('_slider_$thumb', $thumb);\n $slider.data('_slider_$input', $input);\n $slider.data('_slider_min', $input.attr('min'));\n $slider.data('_slider_max', $input.attr('max'));\n $slider.data('_slider_disabled', isDisabled);\n $slider.data('_slider_discrete', isDiscrete);\n $slider.data('_slider_$thumbText', $thumbText);\n\n // 设置默认值\n updateValueStyle($slider);\n}\n\nconst rangeSelector = '.mdui-slider input[type=\"range\"]';\n\n$(() => {\n // 滑块滑动事件\n $document.on('input change', rangeSelector, function () {\n const $slider = $(this).parent() as JQ;\n\n updateValueStyle($slider);\n });\n\n // 开始触摸滑块事件\n $document.on(startEvent, rangeSelector, function (event: Event) {\n if (!isAllow(event)) {\n return;\n }\n\n register(event);\n\n if ((this as HTMLInputElement).disabled) {\n return;\n }\n\n const $slider = $(this).parent() as JQ;\n\n $slider.addClass('mdui-slider-focus');\n });\n\n // 结束触摸滑块事件\n $document.on(endEvent, rangeSelector, function (event: Event) {\n if (!isAllow(event)) {\n return;\n }\n\n if ((this as HTMLInputElement).disabled) {\n return;\n }\n\n const $slider = $(this).parent() as JQ;\n\n $slider.removeClass('mdui-slider-focus');\n });\n\n $document.on(unlockEvent, rangeSelector, register);\n\n /**\n * 初始化滑块\n */\n mdui.mutation('.mdui-slider', function () {\n reInit($(this));\n });\n});\n\nmdui.updateSliders = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-slider') : $(selector);\n\n $elements.each((_, element) => {\n reInit($(element));\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/last';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transitionEnd';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document } from '../../utils/dom';\nimport { startEvent } from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 浮动操作按钮组件\n *\n * 请通过 `new mdui.Fab()` 调用\n */\n Fab: {\n /**\n * 实例化 Fab 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Fab;\n };\n }\n}\n\ntype OPTIONS = {\n /**\n * 触发方式。`hover`: 鼠标悬浮触发;`click`: 点击触发\n *\n * 默认为 `hover`\n */\n trigger?: 'click' | 'hover';\n};\n\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n trigger: 'hover',\n};\n\nclass Fab {\n /**\n * Fab 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 fab 的状态\n */\n private state: STATE = 'closed';\n\n /**\n * 按钮元素\n */\n private $btn: JQ;\n\n /**\n * 拨号菜单元素\n */\n private $dial: JQ;\n\n /**\n * 拨号菜单内的按钮\n */\n private $dialBtns: JQ;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$element = $(selector).first();\n\n extend(this.options, options);\n\n this.$btn = this.$element.find('.mdui-fab');\n this.$dial = this.$element.find('.mdui-fab-dial');\n this.$dialBtns = this.$dial.find('.mdui-fab');\n\n if (this.options.trigger === 'hover') {\n this.$btn.on('touchstart mouseenter', () => this.open());\n this.$element.on('mouseleave', () => this.close());\n }\n\n if (this.options.trigger === 'click') {\n this.$btn.on(startEvent, () => this.open());\n }\n\n // 触摸屏幕其他地方关闭快速拨号\n $document.on(startEvent, (event) => {\n if ($(event.target as HTMLElement).parents('.mdui-fab-wrapper').length) {\n return;\n }\n\n this.close();\n });\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'fab', this.$element, this);\n }\n\n /**\n * 当前是否为打开状态\n */\n private isOpen(): boolean {\n return this.state === 'opening' || this.state === 'opened';\n }\n\n /**\n * 打开快速拨号菜单\n */\n public open(): void {\n if (this.isOpen()) {\n return;\n }\n\n // 为菜单中的按钮添加不同的 transition-delay\n this.$dialBtns.each((index, btn) => {\n const delay = `${15 * (this.$dialBtns.length - index)}ms`;\n\n btn.style.transitionDelay = delay;\n btn.style.webkitTransitionDelay = delay;\n });\n\n this.$dial.css('height', 'auto').addClass('mdui-fab-dial-show');\n\n // 如果按钮中存在 .mdui-fab-opened 的图标,则进行图标切换\n if (this.$btn.find('.mdui-fab-opened').length) {\n this.$btn.addClass('mdui-fab-opened');\n }\n\n this.state = 'opening';\n this.triggerEvent('open');\n\n // 打开顺序为从下到上逐个打开,最上面的打开后才表示动画完成\n this.$dialBtns.first().transitionEnd(() => {\n if (this.$btn.hasClass('mdui-fab-opened')) {\n this.state = 'opened';\n this.triggerEvent('opened');\n }\n });\n }\n\n /**\n * 关闭快速拨号菜单\n */\n public close(): void {\n if (!this.isOpen()) {\n return;\n }\n\n // 为菜单中的按钮添加不同的 transition-delay\n this.$dialBtns.each((index, btn) => {\n const delay = `${15 * index}ms`;\n\n btn.style.transitionDelay = delay;\n btn.style.webkitTransitionDelay = delay;\n });\n\n this.$dial.removeClass('mdui-fab-dial-show');\n this.$btn.removeClass('mdui-fab-opened');\n this.state = 'closing';\n this.triggerEvent('close');\n\n // 从上往下依次关闭,最后一个关闭后才表示动画完成\n this.$dialBtns.last().transitionEnd(() => {\n if (this.$btn.hasClass('mdui-fab-opened')) {\n return;\n }\n\n this.state = 'closed';\n this.triggerEvent('closed');\n this.$dial.css('height', 0);\n });\n }\n\n /**\n * 切换快速拨号菜单的打开状态\n */\n public toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /**\n * 以动画的形式显示整个浮动操作按钮\n */\n public show(): void {\n this.$element.removeClass('mdui-fab-hide');\n }\n\n /**\n * 以动画的形式隐藏整个浮动操作按钮\n */\n public hide(): void {\n this.$element.addClass('mdui-fab-hide');\n }\n\n /**\n * 返回当前快速拨号菜单的打开状态。共包含四种状态:`opening`、`opened`、`closing`、`closed`\n */\n public getState(): STATE {\n return this.state;\n }\n}\n\nmdui.Fab = Fab;\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-fab';\n\n$(() => {\n // mouseenter 不冒泡,无法进行事件委托,这里用 mouseover 代替。\n // 不管是 click 、 mouseover 还是 touchstart ,都先初始化。\n\n $document.on(\n 'touchstart mousedown mouseover',\n `[${customAttr}]`,\n function () {\n new mdui.Fab(\n this as HTMLElement,\n parseOptions(this as HTMLElement, customAttr),\n );\n },\n );\n});\n","/**\n * 最终生成的元素结构为:\n * \n *
// $element\n * State 1 // $selected\n *
// $menu\n *
State 1
// $items\n *
State 2
\n *
State 3
\n *
\n *
\n */\n\nimport $ from 'mdui.jq/es/$';\nimport contains from 'mdui.jq/es/functions/contains';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/add';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/after';\nimport 'mdui.jq/es/methods/append';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/hide';\nimport 'mdui.jq/es/methods/index';\nimport 'mdui.jq/es/methods/innerWidth';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeAttr';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/show';\nimport 'mdui.jq/es/methods/text';\nimport 'mdui.jq/es/methods/trigger';\nimport 'mdui.jq/es/methods/val';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transitionEnd';\nimport '../../jq_extends/static/guid';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document, $window } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 下拉选择组件\n *\n * 请通过 `new mdui.Select()` 调用\n */\n Select: {\n /**\n * 实例化 Select 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Select;\n };\n }\n}\n\ntype OPTIONS = {\n /**\n * 下拉框位置:`auto`、`top`、`bottom`\n */\n position?: 'auto' | 'top' | 'bottom';\n\n /**\n * 菜单与窗口上下边框至少保持多少间距\n */\n gutter?: number;\n};\n\ntype STATE = 'closing' | 'closed' | 'opening' | 'opened';\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n position: 'auto',\n gutter: 16,\n};\n\nclass Select {\n /**\n * 原生 ``\n : '') +\n (options.type === 'textarea'\n ? ``\n : '') +\n '
';\n\n const onCancelClick = (dialog: Dialog): void => {\n const value = dialog.$element.find('.mdui-textfield-input').val();\n onCancel(value, dialog);\n };\n\n const onConfirmClick = (dialog: Dialog): void => {\n const value = dialog.$element.find('.mdui-textfield-input').val();\n onConfirm(value, dialog);\n };\n\n return mdui.dialog({\n title,\n content,\n buttons: [\n {\n text: options.cancelText,\n bold: false,\n close: options.closeOnCancel,\n onClick: onCancelClick,\n },\n {\n text: options.confirmText,\n bold: false,\n close: options.closeOnConfirm,\n onClick: onConfirmClick,\n },\n ],\n cssClass: 'mdui-dialog-prompt',\n history: options.history,\n modal: options.modal,\n closeOnEsc: options.closeOnEsc,\n onOpen: (dialog) => {\n // 初始化输入框\n const $input = dialog.$element.find('.mdui-textfield-input');\n mdui.updateTextFields($input);\n\n // 聚焦到输入框\n $input[0].focus();\n\n // 捕捉文本框回车键,在单行文本框的情况下触发回调\n if (options.type !== 'textarea' && options.confirmOnEnter === true) {\n $input.on('keydown', (event) => {\n if ((event as KeyboardEvent).keyCode === 13) {\n const value = dialog.$element.find('.mdui-textfield-input').val();\n onConfirm(value, dialog);\n\n if (options.closeOnConfirm) {\n dialog.close();\n }\n\n return false;\n }\n\n return;\n });\n }\n\n // 如果是多行输入框,监听输入框的 input 事件,更新对话框高度\n if (options.type === 'textarea') {\n $input.on('input', () => dialog.handleUpdate());\n }\n\n // 有字符数限制时,加载完文本框后 DOM 会变化,需要更新对话框高度\n if (options.maxlength) {\n dialog.handleUpdate();\n }\n },\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/html';\nimport 'mdui.jq/es/methods/offset';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/width';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transformOrigin';\nimport '../../jq_extends/methods/transitionEnd';\nimport '../../jq_extends/static/guid';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $window } from '../../utils/dom';\nimport { isAllow, register, unlockEvent } from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * Tooltip 组件\n *\n * 请通过 `new mdui.Tooltip()` 调用\n */\n Tooltip: {\n /**\n * 实例化 Tooltip 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Tooltip;\n };\n }\n}\n\ntype POSITION = 'auto' | 'bottom' | 'top' | 'left' | 'right';\n\ntype OPTIONS = {\n /**\n * Tooltip 的位置。取值范围包括 `auto`、`bottom`、`top`、`left`、`right`。\n * 为 `auto` 时,会自动判断位置。默认在下方。优先级为 `bottom` > `top` > `left` > `right`。\n * 默认为 `auto`\n */\n position?: POSITION;\n\n /**\n * 延时触发,单位毫秒。默认为 `0`,即没有延时。\n */\n delay?: number;\n\n /**\n * Tooltip 的内容\n */\n content?: string;\n};\n\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n position: 'auto',\n delay: 0,\n content: '',\n};\n\nclass Tooltip {\n /**\n * 触发 tooltip 元素的 JQ 对象\n */\n public $target: JQ;\n\n /**\n * tooltip 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 tooltip 的状态\n */\n private state: STATE = 'closed';\n\n /**\n * setTimeout 的返回值\n */\n private timeoutId: any = null;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$target = $(selector).first();\n\n extend(this.options, options);\n\n // 创建 Tooltip HTML\n this.$element = $(\n `
${\n this.options.content\n }
`,\n ).appendTo(document.body);\n\n // 绑定事件。元素处于 disabled 状态时无法触发鼠标事件,为了统一,把 touch 事件也禁用\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n this.$target\n .on('touchstart mouseenter', function (event) {\n if (that.isDisabled(this as HTMLElement)) {\n return;\n }\n\n if (!isAllow(event)) {\n return;\n }\n\n register(event);\n\n that.open();\n })\n .on('touchend mouseleave', function (event) {\n if (that.isDisabled(this as HTMLElement)) {\n return;\n }\n\n if (!isAllow(event)) {\n return;\n }\n\n that.close();\n })\n .on(unlockEvent, function (event) {\n if (that.isDisabled(this as HTMLElement)) {\n return;\n }\n\n register(event);\n });\n }\n\n /**\n * 元素是否已禁用\n * @param element\n */\n private isDisabled(element: HTMLElement): boolean {\n return (\n (element as HTMLInputElement).disabled ||\n $(element).attr('disabled') !== undefined\n );\n }\n\n /**\n * 是否是桌面设备\n */\n private isDesktop(): boolean {\n return $window.width() > 1024;\n }\n\n /**\n * 设置 Tooltip 的位置\n */\n private setPosition(): void {\n let marginLeft: number;\n let marginTop: number;\n\n // 触发的元素\n const targetProps = this.$target[0].getBoundingClientRect();\n\n // 触发的元素和 Tooltip 之间的距离\n const targetMargin = this.isDesktop() ? 14 : 24;\n\n // Tooltip 的宽度和高度\n const tooltipWidth = this.$element[0].offsetWidth;\n const tooltipHeight = this.$element[0].offsetHeight;\n\n // Tooltip 的方向\n let position: POSITION = this.options.position!;\n\n // 自动判断位置,加 2px,使 Tooltip 距离窗口边框至少有 2px 的间距\n if (position === 'auto') {\n if (\n targetProps.top +\n targetProps.height +\n targetMargin +\n tooltipHeight +\n 2 <\n $window.height()\n ) {\n position = 'bottom';\n } else if (targetMargin + tooltipHeight + 2 < targetProps.top) {\n position = 'top';\n } else if (targetMargin + tooltipWidth + 2 < targetProps.left) {\n position = 'left';\n } else if (\n targetProps.width + targetMargin + tooltipWidth + 2 <\n $window.width() - targetProps.left\n ) {\n position = 'right';\n } else {\n position = 'bottom';\n }\n }\n\n // 设置位置\n switch (position) {\n case 'bottom':\n marginLeft = -1 * (tooltipWidth / 2);\n marginTop = targetProps.height / 2 + targetMargin;\n this.$element.transformOrigin('top center');\n break;\n\n case 'top':\n marginLeft = -1 * (tooltipWidth / 2);\n marginTop =\n -1 * (tooltipHeight + targetProps.height / 2 + targetMargin);\n this.$element.transformOrigin('bottom center');\n break;\n\n case 'left':\n marginLeft = -1 * (tooltipWidth + targetProps.width / 2 + targetMargin);\n marginTop = -1 * (tooltipHeight / 2);\n this.$element.transformOrigin('center right');\n break;\n\n case 'right':\n marginLeft = targetProps.width / 2 + targetMargin;\n marginTop = -1 * (tooltipHeight / 2);\n this.$element.transformOrigin('center left');\n break;\n }\n\n const targetOffset = this.$target.offset();\n\n this.$element.css({\n top: `${targetOffset.top + targetProps.height / 2}px`,\n left: `${targetOffset.left + targetProps.width / 2}px`,\n 'margin-left': `${marginLeft}px`,\n 'margin-top': `${marginTop}px`,\n });\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'tooltip', this.$target, this);\n }\n\n /**\n * 动画结束回调\n */\n private transitionEnd(): void {\n if (this.$element.hasClass('mdui-tooltip-open')) {\n this.state = 'opened';\n this.triggerEvent('opened');\n } else {\n this.state = 'closed';\n this.triggerEvent('closed');\n }\n }\n\n /**\n * 当前 tooltip 是否为打开状态\n */\n private isOpen(): boolean {\n return this.state === 'opening' || this.state === 'opened';\n }\n\n /**\n * 执行打开 tooltip\n */\n private doOpen(): void {\n this.state = 'opening';\n this.triggerEvent('open');\n\n this.$element\n .addClass('mdui-tooltip-open')\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 打开 Tooltip\n * @param options 允许每次打开时设置不同的参数\n */\n public open(options?: OPTIONS): void {\n if (this.isOpen()) {\n return;\n }\n\n const oldOptions = extend({}, this.options);\n\n if (options) {\n extend(this.options, options);\n }\n\n // tooltip 的内容有更新\n if (oldOptions.content !== this.options.content) {\n this.$element.html(this.options.content);\n }\n\n this.setPosition();\n\n if (this.options.delay) {\n this.timeoutId = setTimeout(() => this.doOpen(), this.options.delay);\n } else {\n this.timeoutId = null;\n this.doOpen();\n }\n }\n\n /**\n * 关闭 Tooltip\n */\n public close(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n\n if (!this.isOpen()) {\n return;\n }\n\n this.state = 'closing';\n this.triggerEvent('close');\n\n this.$element\n .removeClass('mdui-tooltip-open')\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 切换 Tooltip 的打开状态\n */\n public toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /**\n * 获取 Tooltip 状态。共包含四种状态:`opening`、`opened`、`closing`、`closed`\n */\n public getState(): STATE {\n return this.state;\n }\n}\n\nmdui.Tooltip = Tooltip;\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/on';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-tooltip';\nconst dataName = '_mdui_tooltip';\n\n$(() => {\n // mouseenter 不能冒泡,所以这里用 mouseover 代替\n $document.on('touchstart mouseover', `[${customAttr}]`, function () {\n const $target = $(this);\n let instance = $target.data(dataName);\n\n if (!instance) {\n instance = new mdui.Tooltip(\n this as HTMLElement,\n parseOptions(this as HTMLElement, customAttr),\n );\n $target.data(dataName, instance);\n }\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/off';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/remove';\nimport { isString } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/reflow';\nimport '../../jq_extends/methods/transform';\nimport '../../jq_extends/methods/transitionEnd';\nimport { $document } from '../../utils/dom';\nimport { dequeue, queue } from '../../utils/queue';\nimport { startEvent } from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 打开一个 Snackbar\n * @param message Snackbar 的文本\n * @param options 配置参数\n */\n snackbar(message: string, options?: OPTIONS): Snackbar;\n\n /**\n * 打开一个 Snackbar\n * @param options 配置参数\n */\n snackbar(options: OPTIONS): Snackbar;\n }\n}\n\ntype OPTIONS = {\n /**\n * Snackbar 的文本。通过 `mdui.snackbar(options)` 调用时,该参数不能为空\n */\n message?: string;\n\n /**\n * 在用户没有操作时多长时间自动隐藏,单位(毫秒)。为 `0` 时表示不自动关闭,默认为 `4000`\n */\n timeout?: number;\n\n /**\n * Snackbar 的位置,默认为 `bottom`。\n * 取值范围包括:\n * `bottom`: 下方\n * `top`: 上方\n * `left-top`: 左上角\n * `left-bottom`: 左下角\n * `right-top`: 右上角\n * `right-bottom`: 右下角\n */\n position?:\n | 'bottom'\n | 'top'\n | 'left-top'\n | 'left-bottom'\n | 'right-top'\n | 'right-bottom';\n\n /**\n * 按钮的文本\n */\n buttonText?: string;\n\n /**\n * 按钮的文本颜色,可以是颜色名或颜色值,如 `red`、`#ffffff`、`rgba(255, 255, 255, 0.3)` 等。默认为 `#90CAF9`\n */\n buttonColor?: string;\n\n /**\n * 点击按钮时是否关闭 Snackbar,默认为 `true`\n */\n closeOnButtonClick?: boolean;\n\n /**\n * 点击或触摸 Snackbar 以外的区域时是否关闭 Snackbar,默认为 `true`\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * 在 Snackbar 上点击的回调函数,参数为 Snackbar 的实例\n */\n onClick?: (snackbar: Snackbar) => void;\n\n /**\n * 点击 Snackbar 上的按钮时的回调函数,参数为 Snackbar 的实例\n */\n onButtonClick?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 开始打开时的回调函数,参数为 Snackbar 的实例\n */\n onOpen?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 打开后的回调函数,参数为 Snackbar 的实例\n */\n onOpened?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 开始关闭时的回调函数,参数为 Snackbar 的实例\n */\n onClose?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 关闭后的回调函数,参数为 Snackbar 的实例\n */\n onClosed?: (snackbar: Snackbar) => void;\n};\n\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n message: '',\n timeout: 4000,\n position: 'bottom',\n buttonText: '',\n buttonColor: '',\n closeOnButtonClick: true,\n closeOnOutsideClick: true,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClick: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onButtonClick: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onOpen: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onOpened: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClose: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClosed: () => {},\n};\n\n/**\n * 当前打开着的 Snackbar\n */\nlet currentInst: null | Snackbar = null;\n\n/**\n * 队列名\n */\nconst queueName = '_mdui_snackbar';\n\nclass Snackbar {\n /**\n * Snackbar 元素\n */\n public $element: JQ;\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 Snackbar 的状态\n */\n private state: STATE = 'closed';\n\n /**\n * setTimeout 的 ID\n */\n private timeoutId: any = null;\n\n public constructor(options: OPTIONS) {\n extend(this.options, options);\n\n // 按钮颜色\n let buttonColorStyle = '';\n let buttonColorClass = '';\n\n if (\n this.options.buttonColor!.indexOf('#') === 0 ||\n this.options.buttonColor!.indexOf('rgb') === 0\n ) {\n buttonColorStyle = `style=\"color:${this.options.buttonColor}\"`;\n } else if (this.options.buttonColor !== '') {\n buttonColorClass = `mdui-text-color-${this.options.buttonColor}`;\n }\n\n // 添加 HTML\n this.$element = $(\n '
' +\n `
${this.options.message}
` +\n (this.options.buttonText\n ? `${this.options.buttonText}`\n : '') +\n '
',\n ).appendTo(document.body);\n\n // 设置位置\n this.setPosition('close');\n\n this.$element.reflow().addClass(`mdui-snackbar-${this.options.position}`);\n }\n\n /**\n * 点击 Snackbar 外面的区域关闭\n * @param event\n */\n private closeOnOutsideClick(event: Event): void {\n const $target = $(event.target as HTMLElement);\n\n if (\n !$target.hasClass('mdui-snackbar') &&\n !$target.parents('.mdui-snackbar').length\n ) {\n currentInst!.close();\n }\n }\n\n /**\n * 设置 Snackbar 的位置\n * @param state\n */\n private setPosition(state: 'open' | 'close'): void {\n const snackbarHeight = this.$element[0].clientHeight;\n const position = this.options.position;\n\n let translateX;\n let translateY;\n\n // translateX\n if (position === 'bottom' || position === 'top') {\n translateX = '-50%';\n } else {\n translateX = '0';\n }\n\n // translateY\n if (state === 'open') {\n translateY = '0';\n } else {\n if (position === 'bottom') {\n translateY = snackbarHeight;\n }\n\n if (position === 'top') {\n translateY = -snackbarHeight;\n }\n\n if (position === 'left-top' || position === 'right-top') {\n translateY = -snackbarHeight - 24;\n }\n\n if (position === 'left-bottom' || position === 'right-bottom') {\n translateY = snackbarHeight + 24;\n }\n }\n\n this.$element.transform(`translate(${translateX},${translateY}px`);\n }\n\n /**\n * 打开 Snackbar\n */\n public open(): void {\n if (this.state === 'opening' || this.state === 'opened') {\n return;\n }\n\n // 如果当前有正在显示的 Snackbar,则先加入队列,等旧 Snackbar 关闭后再打开\n if (currentInst) {\n queue(queueName, () => this.open());\n return;\n }\n\n currentInst = this;\n\n // 开始打开\n this.state = 'opening';\n this.options.onOpen!(this);\n\n this.setPosition('open');\n\n this.$element.transitionEnd(() => {\n if (this.state !== 'opening') {\n return;\n }\n\n this.state = 'opened';\n this.options.onOpened!(this);\n\n // 有按钮时绑定事件\n if (this.options.buttonText) {\n this.$element.find('.mdui-snackbar-action').on('click', () => {\n this.options.onButtonClick!(this);\n if (this.options.closeOnButtonClick) {\n this.close();\n }\n });\n }\n\n // 点击 snackbar 的事件\n this.$element.on('click', (event) => {\n if (!$(event.target as HTMLElement).hasClass('mdui-snackbar-action')) {\n this.options.onClick!(this);\n }\n });\n\n // 点击 Snackbar 外面的区域关闭\n if (this.options.closeOnOutsideClick) {\n $document.on(startEvent, this.closeOnOutsideClick);\n }\n\n // 超时后自动关闭\n if (this.options.timeout) {\n this.timeoutId = setTimeout(() => this.close(), this.options.timeout);\n }\n });\n }\n\n /**\n * 关闭 Snackbar\n */\n public close(): void {\n if (this.state === 'closing' || this.state === 'closed') {\n return;\n }\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n\n if (this.options.closeOnOutsideClick) {\n $document.off(startEvent, this.closeOnOutsideClick);\n }\n\n this.state = 'closing';\n this.options.onClose!(this);\n\n this.setPosition('close');\n\n this.$element.transitionEnd(() => {\n if (this.state !== 'closing') {\n return;\n }\n\n currentInst = null;\n this.state = 'closed';\n this.options.onClosed!(this);\n this.$element.remove();\n dequeue(queueName);\n });\n }\n}\n\nmdui.snackbar = function (message: any, options: any = {}): Snackbar {\n if (isString(message)) {\n options.message = message;\n } else {\n options = message;\n }\n\n const instance = new Snackbar(options);\n\n instance.open();\n\n return instance;\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/removeClass';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document } from '../../utils/dom';\nimport '../headroom';\n\n$(() => {\n // 切换导航项\n $document.on('click', '.mdui-bottom-nav>a', function () {\n const $item = $(this as HTMLElement);\n const $bottomNav = $item.parent();\n\n $bottomNav.children('a').each((index, item) => {\n const isThis = $item.is(item);\n\n if (isThis) {\n componentEvent('change', 'bottomNav', $bottomNav[0], undefined, {\n index,\n });\n }\n\n isThis\n ? $(item).addClass('mdui-bottom-nav-active')\n : $(item).removeClass('mdui-bottom-nav-active');\n });\n });\n\n // 滚动时隐藏 mdui-bottom-nav-scroll-hide\n mdui.mutation('.mdui-bottom-nav-scroll-hide', function () {\n new mdui.Headroom(this, {\n pinnedClass: 'mdui-headroom-pinned-down',\n unpinnedClass: 'mdui-headroom-unpinned-down',\n });\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/html';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 如果需要修改已有的圆形进度条组件,需要调用该方法来重新初始化组件。\n *\n * 若传入了参数,则只重新初始化该参数对应的圆形进度条。若没有传入参数,则重新初始化所有圆形进度条。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateSpinners(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\n/**\n * layer 的 HTML 结构\n * @param index\n */\nfunction layerHTML(index: number | false = false): string {\n return (\n `
` +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
'\n );\n}\n\n/**\n * 填充 HTML\n * @param spinner\n */\nfunction fillHTML(spinner: HTMLElement): void {\n const $spinner = $(spinner);\n\n const layer = $spinner.hasClass('mdui-spinner-colorful')\n ? layerHTML(1) + layerHTML(2) + layerHTML(3) + layerHTML(4)\n : layerHTML();\n\n $spinner.html(layer);\n}\n\n$(() => {\n // 页面加载完后自动填充 HTML 结构\n mdui.mutation('.mdui-spinner', function () {\n fillHTML(this);\n });\n});\n\nmdui.updateSpinners = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-spinner') : $(selector);\n\n $elements.each(function () {\n fillHTML(this);\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport contains from 'mdui.jq/es/functions/contains';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/width';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transformOrigin';\nimport '../../jq_extends/methods/transitionEnd';\nimport '../../jq_extends/static/throttle';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document, $window } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * Menu 组件\n *\n * 请通过 `new mdui.Menu()` 调用\n */\n Menu: {\n /**\n * 实例化 Menu 组件\n * @param anchorSelector 触发菜单的元素的 CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param menuSelector 菜单的 CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n anchorSelector: Selector | HTMLElement | ArrayLike,\n menuSelector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Menu;\n };\n }\n}\n\ntype OPTIONS = {\n /**\n * 菜单相对于触发它的元素的位置,默认为 `auto`。\n * 取值范围包括:\n * `top`: 菜单在触发它的元素的上方\n * `bottom`: 菜单在触发它的元素的下方\n * `center`: 菜单在窗口中垂直居中\n * `auto`: 自动判断位置。优先级为:`bottom` > `top` > `center`\n */\n position?: 'auto' | 'top' | 'bottom' | 'center';\n\n /**\n * 菜单与触发它的元素的对其方式,默认为 `auto`。\n * 取值范围包括:\n * `left`: 菜单与触发它的元素左对齐\n * `right`: 菜单与触发它的元素右对齐\n * `center`: 菜单在窗口中水平居中\n * `auto`: 自动判断位置:优先级为:`left` > `right` > `center`\n */\n align?: 'auto' | 'left' | 'right' | 'center';\n\n /**\n * 菜单与窗口边框至少保持多少间距,单位为 px,默认为 `16`\n */\n gutter?: number;\n\n /**\n * 菜单的定位方式,默认为 `false`。\n * 为 `true` 时,菜单使用 fixed 定位。在页面滚动时,菜单将保持在窗口固定位置,不随滚动条滚动。\n * 为 `false` 时,菜单使用 absolute 定位。在页面滚动时,菜单将随着页面一起滚动。\n */\n fixed?: boolean;\n\n /**\n * 菜单是否覆盖在触发它的元素的上面,默认为 `auto`\n * 为 `true` 时,使菜单覆盖在触发它的元素的上面\n * 为 `false` 时,使菜单不覆盖触发它的元素\n * 为 `auto` 时,简单菜单覆盖触发它的元素。级联菜单不覆盖触发它的元素\n */\n covered?: boolean | 'auto';\n\n /**\n * 子菜单的触发方式,默认为 `hover`\n * 为 `click` 时,点击时触发子菜单\n * 为 `hover` 时,鼠标悬浮时触发子菜单\n */\n subMenuTrigger?: 'click' | 'hover';\n\n /**\n * 子菜单的触发延迟时间(单位:毫秒),只有在 `subMenuTrigger: hover` 时,这个参数才有效,默认为 `200`\n */\n subMenuDelay?: number;\n};\n\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n position: 'auto',\n align: 'auto',\n gutter: 16,\n fixed: false,\n covered: 'auto',\n subMenuTrigger: 'hover',\n subMenuDelay: 200,\n};\n\nclass Menu {\n /**\n * 触发菜单的元素的 JQ 对象\n */\n public $anchor: JQ;\n\n /**\n * 菜单元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前菜单状态\n */\n private state: STATE = 'closed';\n\n /**\n * 是否是级联菜单\n */\n private isCascade: boolean;\n\n /**\n * 菜单是否覆盖在触发它的元素的上面\n */\n private isCovered: boolean;\n\n public constructor(\n anchorSelector: Selector | HTMLElement | ArrayLike,\n menuSelector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$anchor = $(anchorSelector).first();\n this.$element = $(menuSelector).first();\n\n // 触发菜单的元素 和 菜单必须是同级的元素,否则菜单可能不能定位\n if (!this.$anchor.parent().is(this.$element.parent())) {\n throw new Error('anchorSelector and menuSelector must be siblings');\n }\n\n extend(this.options, options);\n\n // 是否是级联菜单\n this.isCascade = this.$element.hasClass('mdui-menu-cascade');\n\n // covered 参数处理\n this.isCovered =\n this.options.covered === 'auto' ? !this.isCascade : this.options.covered!;\n\n // 点击触发菜单切换\n this.$anchor.on('click', () => this.toggle());\n\n // 点击菜单外面区域关闭菜单\n $document.on('click touchstart', (event: Event) => {\n const $target = $(event.target as HTMLElement);\n\n if (\n this.isOpen() &&\n !$target.is(this.$element) &&\n !contains(this.$element[0], $target[0]) &&\n !$target.is(this.$anchor) &&\n !contains(this.$anchor[0], $target[0])\n ) {\n this.close();\n }\n });\n\n // 点击不含子菜单的菜单条目关闭菜单\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n $document.on('click', '.mdui-menu-item', function () {\n const $item = $(this);\n\n if (\n !$item.find('.mdui-menu').length &&\n $item.attr('disabled') === undefined\n ) {\n that.close();\n }\n });\n\n // 绑定点击或鼠标移入含子菜单的条目的事件\n this.bindSubMenuEvent();\n\n // 窗口大小变化时,重新调整菜单位置\n $window.on(\n 'resize',\n $.throttle(() => this.readjust(), 100),\n );\n }\n\n /**\n * 是否为打开状态\n */\n private isOpen(): boolean {\n return this.state === 'opening' || this.state === 'opened';\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'menu', this.$element, this);\n }\n\n /**\n * 调整主菜单位置\n */\n private readjust(): void {\n let menuLeft;\n let menuTop;\n\n // 菜单位置和方向\n let position: 'bottom' | 'top' | 'center';\n let align: 'left' | 'right' | 'center';\n\n // window 窗口的宽度和高度\n const windowHeight = $window.height();\n const windowWidth = $window.width();\n\n // 配置参数\n const gutter = this.options.gutter!;\n const isCovered = this.isCovered;\n const isFixed = this.options.fixed;\n\n // 动画方向参数\n let transformOriginX;\n let transformOriginY;\n\n // 菜单的原始宽度和高度\n const menuWidth = this.$element.width();\n const menuHeight = this.$element.height();\n\n // 触发菜单的元素在窗口中的位置\n const anchorRect = this.$anchor[0].getBoundingClientRect();\n const anchorTop = anchorRect.top;\n const anchorLeft = anchorRect.left;\n const anchorHeight = anchorRect.height;\n const anchorWidth = anchorRect.width;\n const anchorBottom = windowHeight - anchorTop - anchorHeight;\n const anchorRight = windowWidth - anchorLeft - anchorWidth;\n\n // 触发元素相对其拥有定位属性的父元素的位置\n const anchorOffsetTop = this.$anchor[0].offsetTop;\n const anchorOffsetLeft = this.$anchor[0].offsetLeft;\n\n // 自动判断菜单位置\n if (this.options.position === 'auto') {\n if (anchorBottom + (isCovered ? anchorHeight : 0) > menuHeight + gutter) {\n // 判断下方是否放得下菜单\n position = 'bottom';\n } else if (\n anchorTop + (isCovered ? anchorHeight : 0) >\n menuHeight + gutter\n ) {\n // 判断上方是否放得下菜单\n position = 'top';\n } else {\n // 上下都放不下,居中显示\n position = 'center';\n }\n } else {\n position = this.options.position!;\n }\n\n // 自动判断菜单对齐方式\n if (this.options.align === 'auto') {\n if (anchorRight + anchorWidth > menuWidth + gutter) {\n // 判断右侧是否放得下菜单\n align = 'left';\n } else if (anchorLeft + anchorWidth > menuWidth + gutter) {\n // 判断左侧是否放得下菜单\n align = 'right';\n } else {\n // 左右都放不下,居中显示\n align = 'center';\n }\n } else {\n align = this.options.align!;\n }\n\n // 设置菜单位置\n if (position === 'bottom') {\n transformOriginY = '0';\n menuTop =\n (isCovered ? 0 : anchorHeight) +\n (isFixed ? anchorTop : anchorOffsetTop);\n } else if (position === 'top') {\n transformOriginY = '100%';\n menuTop =\n (isCovered ? anchorHeight : 0) +\n (isFixed ? anchorTop - menuHeight : anchorOffsetTop - menuHeight);\n } else {\n transformOriginY = '50%';\n\n // =====================在窗口中居中\n // 显示的菜单的高度,简单菜单高度不超过窗口高度,若超过了则在菜单内部显示滚动条\n // 级联菜单内部不允许出现滚动条\n let menuHeightTemp = menuHeight;\n\n // 简单菜单比窗口高时,限制菜单高度\n if (!this.isCascade) {\n if (menuHeight + gutter * 2 > windowHeight) {\n menuHeightTemp = windowHeight - gutter * 2;\n this.$element.height(menuHeightTemp);\n }\n }\n\n menuTop =\n (windowHeight - menuHeightTemp) / 2 +\n (isFixed ? 0 : anchorOffsetTop - anchorTop);\n }\n\n this.$element.css('top', `${menuTop}px`);\n\n // 设置菜单对齐方式\n if (align === 'left') {\n transformOriginX = '0';\n menuLeft = isFixed ? anchorLeft : anchorOffsetLeft;\n } else if (align === 'right') {\n transformOriginX = '100%';\n menuLeft = isFixed\n ? anchorLeft + anchorWidth - menuWidth\n : anchorOffsetLeft + anchorWidth - menuWidth;\n } else {\n transformOriginX = '50%';\n\n //=======================在窗口中居中\n // 显示的菜单的宽度,菜单宽度不能超过窗口宽度\n let menuWidthTemp = menuWidth;\n\n // 菜单比窗口宽,限制菜单宽度\n if (menuWidth + gutter * 2 > windowWidth) {\n menuWidthTemp = windowWidth - gutter * 2;\n this.$element.width(menuWidthTemp);\n }\n\n menuLeft =\n (windowWidth - menuWidthTemp) / 2 +\n (isFixed ? 0 : anchorOffsetLeft - anchorLeft);\n }\n\n this.$element.css('left', `${menuLeft}px`);\n\n // 设置菜单动画方向\n this.$element.transformOrigin(`${transformOriginX} ${transformOriginY}`);\n }\n\n /**\n * 调整子菜单的位置\n * @param $submenu\n */\n private readjustSubmenu($submenu: JQ): void {\n const $item = $submenu.parent('.mdui-menu-item');\n\n let submenuTop;\n let submenuLeft;\n\n // 子菜单位置和方向\n let position: 'top' | 'bottom';\n let align: 'left' | 'right';\n\n // window 窗口的宽度和高度\n const windowHeight = $window.height();\n const windowWidth = $window.width();\n\n // 动画方向参数\n let transformOriginX;\n let transformOriginY;\n\n // 子菜单的原始宽度和高度\n const submenuWidth = $submenu.width();\n const submenuHeight = $submenu.height();\n\n // 触发子菜单的菜单项的宽度高度\n const itemRect = $item[0].getBoundingClientRect();\n const itemWidth = itemRect.width;\n const itemHeight = itemRect.height;\n const itemLeft = itemRect.left;\n const itemTop = itemRect.top;\n\n // 判断菜单上下位置\n if (windowHeight - itemTop > submenuHeight) {\n // 判断下方是否放得下菜单\n position = 'bottom';\n } else if (itemTop + itemHeight > submenuHeight) {\n // 判断上方是否放得下菜单\n position = 'top';\n } else {\n // 默认放在下方\n position = 'bottom';\n }\n\n // 判断菜单左右位置\n if (windowWidth - itemLeft - itemWidth > submenuWidth) {\n // 判断右侧是否放得下菜单\n align = 'left';\n } else if (itemLeft > submenuWidth) {\n // 判断左侧是否放得下菜单\n align = 'right';\n } else {\n // 默认放在右侧\n align = 'left';\n }\n\n // 设置菜单位置\n if (position === 'bottom') {\n transformOriginY = '0';\n submenuTop = '0';\n } else if (position === 'top') {\n transformOriginY = '100%';\n submenuTop = -submenuHeight + itemHeight;\n }\n\n $submenu.css('top', `${submenuTop}px`);\n\n // 设置菜单对齐方式\n if (align === 'left') {\n transformOriginX = '0';\n submenuLeft = itemWidth;\n } else if (align === 'right') {\n transformOriginX = '100%';\n submenuLeft = -submenuWidth;\n }\n\n $submenu.css('left', `${submenuLeft}px`);\n\n // 设置菜单动画方向\n $submenu.transformOrigin(`${transformOriginX} ${transformOriginY}`);\n }\n\n /**\n * 打开子菜单\n * @param $submenu\n */\n private openSubMenu($submenu: JQ): void {\n this.readjustSubmenu($submenu);\n\n $submenu\n .addClass('mdui-menu-open')\n .parent('.mdui-menu-item')\n .addClass('mdui-menu-item-active');\n }\n\n /**\n * 关闭子菜单,及其嵌套的子菜单\n * @param $submenu\n */\n private closeSubMenu($submenu: JQ): void {\n // 关闭子菜单\n $submenu\n .removeClass('mdui-menu-open')\n .addClass('mdui-menu-closing')\n .transitionEnd(() => $submenu.removeClass('mdui-menu-closing'))\n\n // 移除激活状态的样式\n .parent('.mdui-menu-item')\n .removeClass('mdui-menu-item-active');\n\n // 循环关闭嵌套的子菜单\n $submenu.find('.mdui-menu').each((_, menu) => {\n const $subSubmenu = $(menu);\n\n $subSubmenu\n .removeClass('mdui-menu-open')\n .addClass('mdui-menu-closing')\n .transitionEnd(() => $subSubmenu.removeClass('mdui-menu-closing'))\n .parent('.mdui-menu-item')\n .removeClass('mdui-menu-item-active');\n });\n }\n\n /**\n * 切换子菜单状态\n * @param $submenu\n */\n private toggleSubMenu($submenu: JQ): void {\n $submenu.hasClass('mdui-menu-open')\n ? this.closeSubMenu($submenu)\n : this.openSubMenu($submenu);\n }\n\n /**\n * 绑定子菜单事件\n */\n private bindSubMenuEvent(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n\n // 点击打开子菜单\n this.$element.on('click', '.mdui-menu-item', function (event) {\n const $item = $(this as HTMLElement);\n const $target = $(event.target as HTMLElement);\n\n // 禁用状态菜单不操作\n if ($item.attr('disabled') !== undefined) {\n return;\n }\n\n // 没有点击在子菜单的菜单项上时,不操作(点在了子菜单的空白区域、或分隔线上)\n if ($target.is('.mdui-menu') || $target.is('.mdui-divider')) {\n return;\n }\n\n // 阻止冒泡,点击菜单项时只在最后一级的 mdui-menu-item 上生效,不向上冒泡\n if (!$target.parents('.mdui-menu-item').first().is($item)) {\n return;\n }\n\n // 当前菜单的子菜单\n const $submenu = $item.children('.mdui-menu');\n\n // 先关闭除当前子菜单外的所有同级子菜单\n $item\n .parent('.mdui-menu')\n .children('.mdui-menu-item')\n .each((_, item) => {\n const $tmpSubmenu = $(item).children('.mdui-menu');\n\n if (\n $tmpSubmenu.length &&\n (!$submenu.length || !$tmpSubmenu.is($submenu))\n ) {\n that.closeSubMenu($tmpSubmenu);\n }\n });\n\n // 切换当前子菜单\n if ($submenu.length) {\n that.toggleSubMenu($submenu);\n }\n });\n\n if (this.options.subMenuTrigger === 'hover') {\n // 临时存储 setTimeout 对象\n let timeout: any = null;\n let timeoutOpen: any = null;\n\n this.$element.on('mouseover mouseout', '.mdui-menu-item', function (\n event,\n ) {\n const $item = $(this as HTMLElement);\n const eventType = event.type;\n const $relatedTarget = $(\n (event as MouseEvent).relatedTarget as HTMLElement,\n );\n\n // 禁用状态的菜单不操作\n if ($item.attr('disabled') !== undefined) {\n return;\n }\n\n // 用 mouseover 模拟 mouseenter\n if (eventType === 'mouseover') {\n if (\n !$item.is($relatedTarget) &&\n contains($item[0], $relatedTarget[0])\n ) {\n return;\n }\n }\n\n // 用 mouseout 模拟 mouseleave\n else if (eventType === 'mouseout') {\n if (\n $item.is($relatedTarget) ||\n contains($item[0], $relatedTarget[0])\n ) {\n return;\n }\n }\n\n // 当前菜单项下的子菜单,未必存在\n const $submenu = $item.children('.mdui-menu');\n\n // 鼠标移入菜单项时,显示菜单项下的子菜单\n if (eventType === 'mouseover') {\n if ($submenu.length) {\n // 当前子菜单准备打开时,如果当前子菜单正准备着关闭,不用再关闭了\n const tmpClose = $submenu.data('timeoutClose.mdui.menu');\n if (tmpClose) {\n clearTimeout(tmpClose);\n }\n\n // 如果当前子菜单已经打开,不操作\n if ($submenu.hasClass('mdui-menu-open')) {\n return;\n }\n\n // 当前子菜单准备打开时,其他准备打开的子菜单不用再打开了\n clearTimeout(timeoutOpen);\n\n // 准备打开当前子菜单\n timeout = timeoutOpen = setTimeout(\n () => that.openSubMenu($submenu),\n that.options.subMenuDelay,\n );\n\n $submenu.data('timeoutOpen.mdui.menu', timeout);\n }\n }\n\n // 鼠标移出菜单项时,关闭菜单项下的子菜单\n else if (eventType === 'mouseout') {\n if ($submenu.length) {\n // 鼠标移出菜单项时,如果当前菜单项下的子菜单正准备打开,不用再打开了\n const tmpOpen = $submenu.data('timeoutOpen.mdui.menu');\n if (tmpOpen) {\n clearTimeout(tmpOpen);\n }\n\n // 准备关闭当前子菜单\n timeout = setTimeout(\n () => that.closeSubMenu($submenu),\n that.options.subMenuDelay,\n );\n\n $submenu.data('timeoutClose.mdui.menu', timeout);\n }\n }\n });\n }\n }\n\n /**\n * 动画结束回调\n */\n private transitionEnd(): void {\n this.$element.removeClass('mdui-menu-closing');\n\n if (this.state === 'opening') {\n this.state = 'opened';\n this.triggerEvent('opened');\n }\n\n if (this.state === 'closing') {\n this.state = 'closed';\n this.triggerEvent('closed');\n\n // 关闭后,恢复菜单样式到默认状态,并恢复 fixed 定位\n this.$element.css({\n top: '',\n left: '',\n width: '',\n position: 'fixed',\n });\n }\n }\n\n /**\n * 切换菜单状态\n */\n public toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /**\n * 打开菜单\n */\n public open(): void {\n if (this.isOpen()) {\n return;\n }\n\n this.state = 'opening';\n this.triggerEvent('open');\n\n this.readjust();\n\n this.$element\n // 菜单隐藏状态使用使用 fixed 定位。\n .css('position', this.options.fixed ? 'fixed' : 'absolute')\n .addClass('mdui-menu-open')\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 关闭菜单\n */\n public close(): void {\n if (!this.isOpen()) {\n return;\n }\n\n this.state = 'closing';\n this.triggerEvent('close');\n\n // 菜单开始关闭时,关闭所有子菜单\n this.$element.find('.mdui-menu').each((_, submenu) => {\n this.closeSubMenu($(submenu));\n });\n\n this.$element\n .removeClass('mdui-menu-open')\n .addClass('mdui-menu-closing')\n .transitionEnd(() => this.transitionEnd());\n }\n}\n\nmdui.Menu = Menu;\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/on';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-menu';\nconst dataName = '_mdui_menu';\n\ntype OPTIONS = {\n target: string;\n position?: 'auto' | 'top' | 'bottom' | 'center';\n align?: 'auto' | 'left' | 'right' | 'center';\n gutter?: number;\n fixed?: boolean;\n covered?: boolean | 'auto';\n subMenuTrigger?: 'click' | 'hover';\n subMenuDelay?: number;\n};\n\n$(() => {\n $document.on('click', `[${customAttr}]`, function () {\n const $this = $(this as HTMLElement);\n let instance = $this.data(dataName);\n\n if (!instance) {\n const options = parseOptions(this as HTMLElement, customAttr) as OPTIONS;\n const menuSelector = options.target;\n delete options.target;\n\n instance = new mdui.Menu($this, menuSelector, options);\n $this.data(dataName, instance);\n\n instance.toggle();\n }\n });\n});\n"],"names":["get","set","DEFAULT_OPTIONS","customAttr","dataName","currentInst","queueName"],"mappings":"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"} \ No newline at end of file diff --git a/js/mdui.min.js b/js/mdui.min.js deleted file mode 100644 index 50784c9..0000000 --- a/js/mdui.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * mdui 1.0.0 (https://mdui.org) - * Copyright 2016-2020 zdhxiong - * Licensed under MIT - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).mdui=e()}(this,function(){"use strict";function t(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n}function e(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})}!function(){try{return new MouseEvent("test")}catch(t){}function t(t,e){e=e||{bubbles:!1,cancelable:!1};var n=document.createEvent("MouseEvent");return n.initMouseEvent(t,e.bubbles,e.cancelable,window,0,e.screenX||0,e.screenY||0,e.clientX||0,e.clientY||0,e.ctrlKey||!1,e.altKey||!1,e.shiftKey||!1,e.metaKey||!1,e.button||0,e.relatedTarget||null),n}t.prototype=Event.prototype,window.MouseEvent=t}(),"function"!=typeof window.CustomEvent&&(t.prototype=window.Event.prototype,window.CustomEvent=t);var n=setTimeout;function u(t){return Boolean(t&&void 0!==t.length)}function i(){}function s(t){if(!(this instanceof s))throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],d(t,this)}function o(n,i){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,s._immediateFn(function(){var t=1===n._state?i.onFulfilled:i.onRejected;if(null!==t){var e;try{e=t(n._value)}catch(t){return void a(i.promise,t)}r(i.promise,e)}else(1===n._state?r:a)(i.promise,n._value)})):n._deferreds.push(i)}function r(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof s)return e._state=3,e._value=t,void c(e);if("function"==typeof n)return void d((i=n,o=t,function(){i.apply(o,arguments)}),e)}e._state=1,e._value=t,c(e)}catch(t){a(e,t)}var i,o}function a(t,e){t._state=2,t._value=e,c(t)}function c(t){2===t._state&&0===t._deferreds.length&&s._immediateFn(function(){t._handled||s._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e"===n[n.length-1]){var i="div";return A({li:"ul",tr:"tbody",td:"tr",th:"tr",tbody:"table",option:"select"},function(t,e){if(0===n.indexOf("<"+t))return i=e,!1}),new D(S(n,i))}if(!("#"===t[0]&&!t.match(/[ .<>:~]/)))return new D(document.querySelectorAll(t));var e=document.getElementById(t.slice(1));return e?new D([e]):new D}return!b(t)||t instanceof Node?new D([t]):new D(t)}).fn=D.prototype,R),L=H(document),B=H(window),P=H("body");setTimeout(function(){return P.addClass("mdui-loaded")});var N={$:H};function z(t,e){return t!==e&&C(t).contains(e)}function F(n,t){return A(t,function(t,e){n.push(e)}),n}H.fn.each=function(t){return A(this,t)},H.fn.get=function(t){return void 0===t?[].slice.call(this):this[0<=t?t:t+this.length]},H.fn.find=function(n){var i=[];return this.each(function(t,e){F(i,H(e.querySelectorAll(n)).get())}),new D(i)};var q={},W=1;function Y(t){var e="_mduiEventId";return t[e]||(t[e]=++W),t[e]}function U(t){var e=t.split(".");return{type:e[0],ns:e.slice(1).sort().join(" ")}}function X(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function V(s,t,r,a){function u(t){delete e[t.id],s.removeEventListener(t.type,t.proxy,!1)}var e=q[Y(s)]||[];t?t.split(" ").forEach(function(t){var e,n,i,o;t&&(e=s,n=r,i=a,o=U(t),(q[Y(e)]||[]).filter(function(t){return t&&(!o.type||t.type===o.type)&&(!o.ns||X(o.ns).test(t.ns))&&(!n||Y(t.func)===Y(n))&&(!i||t.selector===i)})).forEach(function(t){return u(t)})}):e.forEach(function(t){return u(t)})}function J(n,t){for(var e=[],i=arguments.length-2;0"===n[n.length-1]?i&&y(e)?H(e.cloneNode(!0)):H(e):H(S(e,"div")))[s?"insertAfter":"insertBefore"](o)})})}}),H.fn.off=function(t,n,e){var i=this;return x(t)?(A(t,function(t,e){i.off(t,n,e)}),this):(!1!==n&&!f(n)||(e=n,n=void 0),!1===e&&(e=j),this.each(function(){V(this,t,e,n)}))},H.fn.on=function(t,n,i,e,o){var s=this;if(x(t))return E(n)||(i=i||n,n=void 0),A(t,function(t,e){s.on(t,n,i,e,o)}),this;if(null==i&&null==e?(e=n,i=n=void 0):null==e&&(E(n)?(e=i,i=void 0):(e=i,i=n,n=void 0)),!1===e)e=j;else if(!e)return this;if(o){var r=this,a=e;e=function(t){return r.off(t.type,n,e),a.apply(this,arguments)}}return this.each(function(){!function(s,t,r,a,u){var c=Y(s);q[c]||(q[c]=[]);var l=!1;x(a)&&a.useCapture&&(l=!0),t.split(" ").forEach(function(t){if(t){var n=U(t),e={type:n.type,ns:n.ns,func:r,selector:u,id:q[c].length,proxy:o};q[c].push(e),s.addEventListener(e.type,o,l)}function i(t,e){!1===r.apply(e,void 0===t._detail?[t]:[t].concat(t._detail))&&(t.preventDefault(),t.stopPropagation())}function o(e){e._ns&&!X(e._ns).test(n.ns)||(e._data=a,u?H(s).find(u).get().reverse().forEach(function(t){t!==e.target&&!z(t,e.target)||i(e,t)}):i(e,s))}})}(this,t,e,i,n)})},A(Q,function(t,e){H.fn[t]=function(n){return this.on(e,function(t,e){n(t,e.xhr,e.options,e.data)})}}),H.fn.map=function(n){return new D(ot(this,function(t,e){return n.call(t,e,t)}))},H.fn.clone=function(){return this.map(function(){return this.cloneNode(!0)})},H.fn.is=function(n){var i=!1;if(f(n))return this.each(function(t,e){n.call(e,t,e)&&(i=!0)}),i;if(E(n))return this.each(function(t,e){g(e)||v(e)||(e.matches||e.msMatchesSelector).call(e,n)&&(i=!0)}),i;var e=H(n);return this.each(function(t,n){e.each(function(t,e){n===e&&(i=!0)})}),i},H.fn.remove=function(n){return this.each(function(t,e){!e.parentNode||n&&!H(e).is(n)||e.parentNode.removeChild(e)})},A(["prepend","append"],function(u,t){H.fn[t]=function(){for(var a=[],t=arguments.length;t--;)a[t]=arguments[t];return this.each(function(t,e){var n,i=e.childNodes,o=i.length,s=o?i[u?o-1:0]:document.createElement("div");o||e.appendChild(s);var r=f(a[0])?[a[0].call(e,t,e.innerHTML)]:a;t&&(r=r.map(function(t){return E(t)?t:H(t).clone()})),(n=H(s))[u?"after":"before"].apply(n,r),o||e.removeChild(s)})}}),A(["appendTo","prependTo"],function(r,t){H.fn[t]=function(t){var s=[],e=H(t).map(function(t,e){var n=e.childNodes,i=n.length;if(i)return n[r?0:i-1];var o=document.createElement("div");return e.appendChild(o),s.push(o),o}),n=this[r?"insertBefore":"insertAfter"](e);return H(s).remove(),n}}),A(["attr","prop","css"],function(s,r){function a(t,e){switch(s){case 0:var n=t.getAttribute(e);return m(n)?void 0:n;case 1:return t[e];default:return I(t,e)}}H.fn[r]=function(n,i){var o=this;if(x(n))return A(n,function(t,e){o[r](t,e)}),this;if(1!==arguments.length)return this.each(function(t,e){!function(t,e,n){if(!O(n))switch(s){case 0:m(n)?t.removeAttribute(e):t.setAttribute(e,n);break;case 1:t[e]=n;break;default:e=w(e),t.style[e]=p(n)?n+(-1').appendTo(document.body).reflow().css("z-index",t));var n=e.data("_overlay_level")||0;return e.data("_overlay_level",++n).addClass("mdui-overlay-show")},H.hideOverlay=function(t){void 0===t&&(t=!1);var e=H(".mdui-overlay");if(e.length){var n=t?1:e.data("_overlay_level");1i.lastScrollY?"down":"up",n=i.options.tolerance[e]<=Math.abs(t-i.lastScrollY);t>i.lastScrollY&&t>=i.options.offset&&n?i.unpin():(t"},It.prototype.updateThCheckboxStatus=function(){var t=this.$thCheckbox[0],e=this.selectedRow,n=this.$tdRows.length;t.checked=e===n,t.indeterminate=!!e&&e!==n},It.prototype.updateTdCheckbox=function(){var o=this,s="mdui-table-row-selected";this.$tdRows.each(function(t,e){var n=H(e);if(n.find(".mdui-table-cell-checkbox").remove(),o.selectable){var i=H(o.createCheckboxHTML("td")).prependTo(n).find('input[type="checkbox"]');n.hasClass(s)&&(i[0].checked=!0,o.selectedRow++),o.updateThCheckboxStatus(),i.on("change",function(){i[0].checked?(n.addClass(s),o.selectedRow++):(n.removeClass(s),o.selectedRow--),o.updateThCheckboxStatus()}),o.$tdCheckboxs=o.$tdCheckboxs.add(i)}})},It.prototype.updateThCheckbox=function(){var t=this;this.$thRow.find(".mdui-table-cell-checkbox").remove(),this.selectable&&(this.$thCheckbox=H(this.createCheckboxHTML("th")).prependTo(this.$thRow).find('input[type="checkbox"]').on("change",function(){var n=t.$thCheckbox[0].checked;t.selectedRow=n?t.$tdRows.length:0,t.$tdCheckboxs.each(function(t,e){e.checked=n}),t.$tdRows.each(function(t,e){n?H(e).addClass("mdui-table-row-selected"):H(e).removeClass("mdui-table-row-selected")})}))},It.prototype.updateNumericCol=function(){var e=this,s="mdui-table-col-numeric";this.$thRow.find("th").each(function(i,t){var o=H(t).hasClass(s);e.$tdRows.each(function(t,e){var n=H(e).find("td").eq(i);o?n.addClass(s):n.removeClass(s)})})};var St="_mdui_table";H(function(){N.mutation(".mdui-table",function(){var t=H(this);t.data(St)||t.data(St,new It(t))})}),N.updateTables=function(t){(O(t)?H(".mdui-table"):H(t)).each(function(t,e){var n=H(e),i=n.data(St);i?i.init():n.data(St,new It(n))})};var jt="touchstart mousedown",Mt="touchmove mousemove",At="touchend mouseup",Dt="touchcancel mouseleave",Rt="touchend touchmove touchcancel",Ht=0;function Lt(t){return!(Ht&&-1<["mousedown","mouseup","mousemove","click","mouseover","mouseout","mouseenter","mouseleave"].indexOf(t.type))}function Bt(t){"touchstart"===t.type?Ht+=1:-1<["touchmove","touchend","touchcancel"].indexOf(t.type)&&setTimeout(function(){Ht&&--Ht},500)}function Pt(t,e){if(!(t instanceof MouseEvent&&2===t.button)){var n="undefined"!=typeof TouchEvent&&t instanceof TouchEvent&&t.touches.length?t.touches[0]:t,i=n.pageX,o=n.pageY,s=e.offset(),r=e.innerHeight(),a=e.innerWidth(),u=i-s.left,c=o-s.top,l=Math.max(Math.pow(Math.pow(r,2)+Math.pow(a,2),.5),48),d="translate3d("+(a/2-u)+"px,"+(r/2-c)+"px, 0) scale(1)";H('
').data("_ripple_wave_translate",d).prependTo(e).reflow().transform(d)}}function Nt(){var t=H(this);t.children(".mdui-ripple-wave").each(function(t,e){!function(t){if(t.length&&!t.data("_ripple_wave_removed")){t.data("_ripple_wave_removed",!0);var e=setTimeout(function(){return t.remove()},400),n=t.data("_ripple_wave_translate");t.addClass("mdui-ripple-wave-fill").transform(n.replace("scale(1)","scale(1.01)")).transitionEnd(function(){clearTimeout(e),t.addClass("mdui-ripple-wave-out").transform(n.replace("scale(1)","scale(1.01)")),e=setTimeout(function(){return t.remove()},700),setTimeout(function(){t.transitionEnd(function(){clearTimeout(e),t.remove()})},0)})}}(H(e))}),t.off(Mt+" "+At+" "+Dt,Nt)}function zt(t){if(Lt(t)&&(Bt(t),t.target!==document)){var e=H(t.target),n=e.hasClass("mdui-ripple")?e:e.parents(".mdui-ripple").first();if(n.length&&!n.prop("disabled")&&O(n.attr("disabled")))if("touchstart"===t.type){var i=!1,o=setTimeout(function(){o=0,Pt(t,n)},200),s=function(){o&&(clearTimeout(o),o=0,Pt(t,n)),i||(i=!0,Nt.call(n))};n.on("touchmove",function(){o&&(clearTimeout(o),o=0),s()}).on("touchend touchcancel",s)}else Pt(t,n),n.on(Mt+" "+At+" "+Dt,Nt)}}H(function(){L.on(jt,zt).on(Rt,Bt)});var Ft={reInit:!1,domLoadedEvent:!1};function qt(t,e){void 0===e&&(e={}),e=J({},Ft,e);var n=t.target,i=H(n),o=t.type,s=i.val(),r=i.attr("type")||"";if(!(-1<["checkbox","button","submit","range","radio","image"].indexOf(r))){var a=i.parent(".mdui-textfield");if("focus"===o&&a.addClass("mdui-textfield-focus"),"blur"===o&&a.removeClass("mdui-textfield-focus"),"blur"!==o&&"input"!==o||(s?a.addClass("mdui-textfield-not-empty"):a.removeClass("mdui-textfield-not-empty")),n.disabled?a.addClass("mdui-textfield-disabled"):a.removeClass("mdui-textfield-disabled"),"input"!==o&&"blur"!==o||e.domLoadedEvent||!n.validity||(n.validity.valid?a.removeClass("mdui-textfield-invalid-html5"):a.addClass("mdui-textfield-invalid-html5")),i.is("textarea")){var u=s,c=!1;""===u.replace(/[\r\n]/g,"")&&(i.val(" "+u),c=!0),i.outerHeight("");var l=i.outerHeight(),d=n.scrollHeight;l / '+h+"
").appendTo(a),a.find(".mdui-textfield-counter-inputed").text(s.length.toString())),(a.find(".mdui-textfield-helper").length||a.find(".mdui-textfield-error").length||h)&&a.addClass("mdui-textfield-has-bottom")}}function Wt(t){var e=t.data(),n=e._slider_$track,i=e._slider_$fill,o=e._slider_$thumb,s=e._slider_$input,r=e._slider_min,a=e._slider_max,u=e._slider_disabled,c=e._slider_discrete,l=e._slider_$thumbText,d=s.val(),h=(d-r)/(a-r)*100;i.width(h+"%"),n.width(100-h+"%"),u&&(i.css("padding-right","6px"),n.css("padding-left","6px")),o.css("left",h+"%"),c&&l.text(d),0==h?t.addClass("mdui-slider-zero"):t.removeClass("mdui-slider-zero")}function Yt(t){var e=H('
'),n=H('
'),i=H('
'),o=t.find('input[type="range"]'),s=o[0].disabled,r=t.hasClass("mdui-slider-discrete");s?t.addClass("mdui-slider-disabled"):t.removeClass("mdui-slider-disabled"),t.find(".mdui-slider-track").remove(),t.find(".mdui-slider-fill").remove(),t.find(".mdui-slider-thumb").remove(),t.append(e).append(n).append(i);var a=H();r&&(a=H(""),i.empty().append(a)),t.data("_slider_$track",e),t.data("_slider_$fill",n),t.data("_slider_$thumb",i),t.data("_slider_$input",o),t.data("_slider_min",o.attr("min")),t.data("_slider_max",o.attr("max")),t.data("_slider_disabled",s),t.data("_slider_discrete",r),t.data("_slider_$thumbText",a),Wt(t)}H(function(){L.on("input focus blur",".mdui-textfield-input",{useCapture:!0},qt),L.on("click",".mdui-textfield-expandable .mdui-textfield-icon",function(){H(this).parents(".mdui-textfield").addClass("mdui-textfield-expanded").find(".mdui-textfield-input")[0].focus()}),L.on("click",".mdui-textfield-expanded .mdui-textfield-close",function(){H(this).parents(".mdui-textfield").removeClass("mdui-textfield-expanded").find(".mdui-textfield-input").val("")}),N.mutation(".mdui-textfield",function(){H(this).find(".mdui-textfield-input").trigger("input",{domLoadedEvent:!0})})}),N.updateTextFields=function(t){(O(t)?H(".mdui-textfield"):H(t)).each(function(t,e){H(e).find(".mdui-textfield-input").trigger("input",{reInit:!0})})};var Ut='.mdui-slider input[type="range"]';H(function(){L.on("input change",Ut,function(){Wt(H(this).parent())}),L.on(jt,Ut,function(t){Lt(t)&&(Bt(t),this.disabled||H(this).parent().addClass("mdui-slider-focus"))}),L.on(At,Ut,function(t){Lt(t)&&(this.disabled||H(this).parent().removeClass("mdui-slider-focus"))}),L.on(Rt,Ut,Bt),N.mutation(".mdui-slider",function(){Yt(H(this))})}),N.updateSliders=function(t){(O(t)?H(".mdui-slider"):H(t)).each(function(t,e){Yt(H(e))})};function Xt(t,e){var n=this;void 0===e&&(e={}),this.options=J({},Vt),this.state="closed",this.$element=H(t).first(),J(this.options,e),this.$btn=this.$element.find(".mdui-fab"),this.$dial=this.$element.find(".mdui-fab-dial"),this.$dialBtns=this.$dial.find(".mdui-fab"),"hover"===this.options.trigger&&(this.$btn.on("touchstart mouseenter",function(){return n.open()}),this.$element.on("mouseleave",function(){return n.close()})),"click"===this.options.trigger&&this.$btn.on(jt,function(){return n.open()}),L.on(jt,function(t){H(t.target).parents(".mdui-fab-wrapper").length||n.close()})}var Vt={trigger:"hover"};Xt.prototype.triggerEvent=function(t){yt(t,"fab",this.$element,this)},Xt.prototype.isOpen=function(){return"opening"===this.state||"opened"===this.state},Xt.prototype.open=function(){var i=this;this.isOpen()||(this.$dialBtns.each(function(t,e){var n=15*(i.$dialBtns.length-t)+"ms";e.style.transitionDelay=n,e.style.webkitTransitionDelay=n}),this.$dial.css("height","auto").addClass("mdui-fab-dial-show"),this.$btn.find(".mdui-fab-opened").length&&this.$btn.addClass("mdui-fab-opened"),this.state="opening",this.triggerEvent("open"),this.$dialBtns.first().transitionEnd(function(){i.$btn.hasClass("mdui-fab-opened")&&(i.state="opened",i.triggerEvent("opened"))}))},Xt.prototype.close=function(){var t=this;this.isOpen()&&(this.$dialBtns.each(function(t,e){var n=15*t+"ms";e.style.transitionDelay=n,e.style.webkitTransitionDelay=n}),this.$dial.removeClass("mdui-fab-dial-show"),this.$btn.removeClass("mdui-fab-opened"),this.state="closing",this.triggerEvent("close"),this.$dialBtns.last().transitionEnd(function(){t.$btn.hasClass("mdui-fab-opened")||(t.state="closed",t.triggerEvent("closed"),t.$dial.css("height",0))}))},Xt.prototype.toggle=function(){this.isOpen()?this.close():this.open()},Xt.prototype.show=function(){this.$element.removeClass("mdui-fab-hide")},Xt.prototype.hide=function(){this.$element.addClass("mdui-fab-hide")},Xt.prototype.getState=function(){return this.state},N.Fab=Xt;var Jt="mdui-fab";H(function(){L.on("touchstart mousedown mouseover","["+Jt+"]",function(){new N.Fab(this,Ct(this,Jt))})});function Kt(t,e){var n=this;void 0===e&&(e={}),this.$element=H(),this.options=J({},Gt),this.size=0,this.$selected=H(),this.$menu=H(),this.$items=H(),this.selectedIndex=0,this.selectedText="",this.selectedValue="",this.state="closed",this.$native=H(t).first(),this.$native.hide(),J(this.options,e),this.uniqueID=H.guid(),this.handleUpdate(),L.on("click touchstart",function(t){var e=H(t.target);!n.isOpen()||e.is(n.$element)||z(n.$element[0],e[0])||n.close()})}var Gt={position:"auto",gutter:16};Kt.prototype.readjustMenu=function(){var t,e,n=B.height(),i=this.$element.height(),o=this.$items.first(),s=o.height(),r=parseInt(o.css("margin-top")),a=this.$element.innerWidth()+.01,u=s*this.size+2*r,c=this.$element[0].getBoundingClientRect().top;if("bottom"===this.options.position)e=i,t="0px";else if("top"===this.options.position)e=-u-1,t="100%";else{var l=n-2*this.options.gutter;ln&&(e=-(c+u+this.options.gutter-n)),t=this.selectedIndex*s+s/2+r+"px"}this.$element.innerWidth(a),this.$menu.innerWidth(a).height(u).css({"margin-top":e+"px","transform-origin":"center "+t+" 0"})},Kt.prototype.isOpen=function(){return"opening"===this.state||"opened"===this.state},Kt.prototype.handleUpdate=function(){var r=this;this.isOpen()&&this.close(),this.selectedValue=this.$native.val();var a=[];this.$items=H(),this.$native.find("option").each(function(t,e){var n=e.textContent||"",i=e.value,o=e.disabled,s=r.selectedValue===i;a.push({value:i,text:n,disabled:o,selected:s,index:t}),s&&(r.selectedText=n,r.selectedIndex=t),r.$items=r.$items.add('
"+n+"
")}),this.$selected=H(''+this.selectedText+""),this.$element=H('
').show().append(this.$selected),this.$menu=H('
').appendTo(this.$element).append(this.$items),H("#"+this.uniqueID).remove(),this.$native.after(this.$element),this.size=parseInt(this.$native.attr("size")||"0"),this.size<=0&&(this.size=this.$items.length,8
').appendTo(this.$element);var i=window.location.hash;i&&this.$tabs.each(function(t,e){return H(e).attr("href")!==i||(n.activeIndex=t,!1)}),-1===this.activeIndex&&this.$tabs.each(function(t,e){return!H(e).hasClass("mdui-tab-active")||(n.activeIndex=t,!1)}),this.$tabs.length&&-1===this.activeIndex&&(this.activeIndex=0),this.setActive(),B.on("resize",H.throttle(function(){return n.setIndicatorPosition()},100)),this.$tabs.each(function(t,e){n.bindTabEvent(e)})}var te={trigger:"click",loop:!1};Zt.prototype.isDisabled=function(t){return void 0!==t.attr("disabled")},Zt.prototype.bindTabEvent=function(t){function e(){if(n.isDisabled(i))return!1;n.activeIndex=n.$tabs.index(t),n.setActive()}var n=this,i=H(t);i.on("click",e),"hover"===this.options.trigger&&i.on("mouseenter",e),i.on("click",function(){if(0===(i.attr("href")||"").indexOf("#"))return!1})},Zt.prototype.triggerEvent=function(t,e,n){void 0===n&&(n={}),yt(t,"tab",e,this,n)},Zt.prototype.setActive=function(){var o=this;this.$tabs.each(function(t,e){var n=H(e),i=n.attr("href")||"";t!==o.activeIndex||o.isDisabled(n)?(n.removeClass("mdui-tab-active"),H(i).hide()):(n.hasClass("mdui-tab-active")||(o.triggerEvent("change",o.$element,{index:o.activeIndex,id:i.substr(1)}),o.triggerEvent("show",n),n.addClass("mdui-tab-active")),H(i).show(),o.setIndicatorPosition())})},Zt.prototype.setIndicatorPosition=function(){if(-1!==this.activeIndex){var t=this.$tabs.eq(this.activeIndex);if(!this.isDisabled(t)){var e=t.offset();this.$indicator.css({left:e.left+this.$element[0].scrollLeft-this.$element[0].getBoundingClientRect().left+"px",width:t.innerWidth()+"px"})}}else this.$indicator.css({left:0,width:0})},Zt.prototype.next=function(){-1!==this.activeIndex&&(this.$tabs.length>this.activeIndex+1?this.activeIndex++:this.options.loop&&(this.activeIndex=0),this.setActive())},Zt.prototype.prev=function(){-1!==this.activeIndex&&(0',A(n.buttons,function(t,e){i+=''+e.text+""}),i+="");var o='
'+(n.title?'
'+n.title+"
":"")+(n.content?'
'+n.content+"
":"")+i+"
",s=new N.Dialog(o,{history:n.history,overlay:n.overlay,modal:n.modal,closeOnEsc:n.closeOnEsc,destroyOnClosed:n.destroyOnClosed});return null!==(e=n.buttons)&&void 0!==e&&e.length&&s.$element.find(".mdui-dialog-actions .mdui-btn").each(function(t,e){H(e).on("click",function(){n.buttons[t].onClick(s),n.buttons[t].close&&s.close()})}),s.$element.on("open.mdui.dialog",function(){n.onOpen(s)}).on("opened.mdui.dialog",function(){n.onOpened(s)}).on("close.mdui.dialog",function(){n.onClose(s)}).on("closed.mdui.dialog",function(){n.onClosed(s)}),s.open(),s}),closeOnEsc:!0,closeOnConfirm:!0},be={confirmText:"ok",cancelText:"cancel",history:!0,modal:!(N.alert=function(t,e,n,i){return f(e)&&(i=n,n=e,e=""),O(n)&&(n=function(){}),O(i)&&(i={}),i=J({},ye,i),N.dialog({title:e,content:t,buttons:[{text:i.confirmText,bold:!1,close:i.closeOnConfirm,onClick:n}],cssClass:"mdui-dialog-alert",history:i.history,modal:i.modal,closeOnEsc:i.closeOnEsc})}),closeOnEsc:!0,closeOnCancel:!0,closeOnConfirm:!0},xe={confirmText:"ok",cancelText:"cancel",history:!0,modal:!(N.confirm=function(t,e,n,i,o){return f(e)&&(o=i,i=n,n=e,e=""),O(n)&&(n=function(){}),O(i)&&(i=function(){}),O(o)&&(o={}),o=J({},be,o),N.dialog({title:e,content:t,buttons:[{text:o.cancelText,bold:!1,close:o.closeOnCancel,onClick:i},{text:o.confirmText,bold:!1,close:o.closeOnConfirm,onClick:n}],cssClass:"mdui-dialog-confirm",history:o.history,modal:o.modal,closeOnEsc:o.closeOnEsc})}),closeOnEsc:!0,closeOnCancel:!0,closeOnConfirm:!0,type:"text",maxlength:0,defaultValue:"",confirmOnEnter:!1};N.prompt=function(t,e,i,n,o){f(e)&&(o=n,n=i,i=e,e=""),O(i)&&(i=function(){}),O(n)&&(n=function(){}),O(o)&&(o={});var s='
'+(t?'":"")+("text"===(o=J({},xe,o)).type?'":"")+("textarea"===o.type?'":"")+"
";return N.dialog({title:e,content:s,buttons:[{text:o.cancelText,bold:!1,close:o.closeOnCancel,onClick:function(t){var e=t.$element.find(".mdui-textfield-input").val();n(e,t)}},{text:o.confirmText,bold:!1,close:o.closeOnConfirm,onClick:function(t){var e=t.$element.find(".mdui-textfield-input").val();i(e,t)}}],cssClass:"mdui-dialog-prompt",history:o.history,modal:o.modal,closeOnEsc:o.closeOnEsc,onOpen:function(n){var t=n.$element.find(".mdui-textfield-input");N.updateTextFields(t),t[0].focus(),"textarea"!==o.type&&!0===o.confirmOnEnter&&t.on("keydown",function(t){if(13===t.keyCode){var e=n.$element.find(".mdui-textfield-input").val();return i(e,n),o.closeOnConfirm&&n.close(),!1}}),"textarea"===o.type&&t.on("input",function(){return n.handleUpdate()}),o.maxlength&&n.handleUpdate()}})};function Ce(t,e){void 0===e&&(e={}),this.options=J({},we),this.state="closed",this.timeoutId=null,this.$target=H(t).first(),J(this.options,e),this.$element=H('
'+this.options.content+"
").appendTo(document.body);var n=this;this.$target.on("touchstart mouseenter",function(t){n.isDisabled(this)||Lt(t)&&(Bt(t),n.open())}).on("touchend mouseleave",function(t){n.isDisabled(this)||Lt(t)&&n.close()}).on(Rt,function(t){n.isDisabled(this)||Bt(t)})}var we={position:"auto",delay:0,content:""};Ce.prototype.isDisabled=function(t){return t.disabled||void 0!==H(t).attr("disabled")},Ce.prototype.isDesktop=function(){return 1024
'+this.options.message+"
"+(this.options.buttonText?'"+this.options.buttonText+"":"")+"").appendTo(document.body),this.setPosition("close"),this.$element.reflow().addClass("mdui-snackbar-"+this.options.position)}var ke={message:"",timeout:4e3,position:"bottom",buttonText:"",buttonColor:"",closeOnButtonClick:!0,closeOnOutsideClick:!0,onClick:function(){},onButtonClick:function(){},onOpen:function(){},onOpened:function(){},onClose:function(){},onClosed:function(){}},_e=null,Te="_mdui_snackbar";function Ie(t){return void 0===t&&(t=!1),'
'}function Se(t){var e=H(t),n=e.hasClass("mdui-spinner-colorful")?Ie(1)+Ie(2)+Ie(3)+Ie(4):Ie();e.html(n)}Oe.prototype.closeOnOutsideClick=function(t){var e=H(t.target);e.hasClass("mdui-snackbar")||e.parents(".mdui-snackbar").length||_e.close()},Oe.prototype.setPosition=function(t){var e,n,i=this.$element[0].clientHeight,o=this.options.position;e="bottom"===o||"top"===o?"-50%":"0","open"===t?n="0":("bottom"===o&&(n=i),"top"===o&&(n=-i),"left-top"!==o&&"right-top"!==o||(n=-i-24),"left-bottom"!==o&&"right-bottom"!==o||(n=i+24)),this.$element.transform("translate("+e+","+n+"px")},Oe.prototype.open=function(){var e=this;"opening"!==this.state&&"opened"!==this.state&&(_e?re(Te,function(){return e.open()}):((_e=this).state="opening",this.options.onOpen(this),this.setPosition("open"),this.$element.transitionEnd(function(){"opening"===e.state&&(e.state="opened",e.options.onOpened(e),e.options.buttonText&&e.$element.find(".mdui-snackbar-action").on("click",function(){e.options.onButtonClick(e),e.options.closeOnButtonClick&&e.close()}),e.$element.on("click",function(t){H(t.target).hasClass("mdui-snackbar-action")||e.options.onClick(e)}),e.options.closeOnOutsideClick&&L.on(jt,e.closeOnOutsideClick),e.options.timeout&&(e.timeoutId=setTimeout(function(){return e.close()},e.options.timeout)))})))},Oe.prototype.close=function(){var t=this;"closing"!==this.state&&"closed"!==this.state&&(this.timeoutId&&clearTimeout(this.timeoutId),this.options.closeOnOutsideClick&&L.off(jt,this.closeOnOutsideClick),this.state="closing",this.options.onClose(this),this.setPosition("close"),this.$element.transitionEnd(function(){"closing"===t.state&&(_e=null,t.state="closed",t.options.onClosed(t),t.$element.remove(),ae(Te))}))},N.snackbar=function(t,e){void 0===e&&(e={}),E(t)?e.message=t:e=t;var n=new Oe(e);return n.open(),n},H(function(){L.on("click",".mdui-bottom-nav>a",function(){var i=H(this),o=i.parent();o.children("a").each(function(t,e){var n=i.is(e);n&&yt("change","bottomNav",o[0],void 0,{index:t}),n?H(e).addClass("mdui-bottom-nav-active"):H(e).removeClass("mdui-bottom-nav-active")})}),N.mutation(".mdui-bottom-nav-scroll-hide",function(){new N.Headroom(this,{pinnedClass:"mdui-headroom-pinned-down",unpinnedClass:"mdui-headroom-unpinned-down"})})}),H(function(){N.mutation(".mdui-spinner",function(){Se(this)})});function je(t,e,n){var i=this;if(void 0===n&&(n={}),this.options=J({},Me),this.state="closed",this.$anchor=H(t).first(),this.$element=H(e).first(),!this.$anchor.parent().is(this.$element.parent()))throw new Error("anchorSelector and menuSelector must be siblings");J(this.options,n),this.isCascade=this.$element.hasClass("mdui-menu-cascade"),this.isCovered="auto"===this.options.covered?!this.isCascade:this.options.covered,this.$anchor.on("click",function(){return i.toggle()}),L.on("click touchstart",function(t){var e=H(t.target);!i.isOpen()||e.is(i.$element)||z(i.$element[0],e[0])||e.is(i.$anchor)||z(i.$anchor[0],e[0])||i.close()});var o=this;L.on("click",".mdui-menu-item",function(){var t=H(this);t.find(".mdui-menu").length||void 0!==t.attr("disabled")||o.close()}),this.bindSubMenuEvent(),B.on("resize",H.throttle(function(){return i.readjust()},100))}var Me={position:"auto",align:"auto",gutter:16,fixed:!(N.updateSpinners=function(t){(O(t)?H(".mdui-spinner"):H(t)).each(function(){Se(this)})}),covered:"auto",subMenuTrigger:"hover",subMenuDelay:200};je.prototype.isOpen=function(){return"opening"===this.state||"opened"===this.state},je.prototype.triggerEvent=function(t){yt(t,"menu",this.$element,this)},je.prototype.readjust=function(){var t,e,n,i,o,s,r=B.height(),a=B.width(),u=this.options.gutter,c=this.isCovered,l=this.options.fixed,d=this.$element.width(),h=this.$element.height(),f=this.$anchor[0].getBoundingClientRect(),p=f.top,m=f.left,v=f.height,g=f.width,y=r-p-v,b=a-m-g,x=this.$anchor[0].offsetTop,C=this.$anchor[0].offsetLeft;if(n="auto"===this.options.position?h+u} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\nif (!('Promise' in globalNS)) {\n globalNS['Promise'] = Promise;\n} else if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n}\n","function isNodeName(element, name) {\n return element.nodeName.toLowerCase() === name.toLowerCase();\n}\nfunction isFunction(target) {\n return typeof target === 'function';\n}\nfunction isString(target) {\n return typeof target === 'string';\n}\nfunction isNumber(target) {\n return typeof target === 'number';\n}\nfunction isBoolean(target) {\n return typeof target === 'boolean';\n}\nfunction isUndefined(target) {\n return typeof target === 'undefined';\n}\nfunction isNull(target) {\n return target === null;\n}\nfunction isWindow(target) {\n return target instanceof Window;\n}\nfunction isDocument(target) {\n return target instanceof Document;\n}\nfunction isElement(target) {\n return target instanceof Element;\n}\nfunction isNode(target) {\n return target instanceof Node;\n}\n/**\n * 是否是 IE 浏览器\n */\nfunction isIE() {\n // @ts-ignore\n return !!window.document.documentMode;\n}\nfunction isArrayLike(target) {\n if (isFunction(target) || isWindow(target)) {\n return false;\n }\n return isNumber(target.length);\n}\nfunction isObjectLike(target) {\n return typeof target === 'object' && target !== null;\n}\nfunction toElement(target) {\n return isDocument(target) ? target.documentElement : target;\n}\n/**\n * 把用 - 分隔的字符串转为驼峰(如 box-sizing 转换为 boxSizing)\n * @param string\n */\nfunction toCamelCase(string) {\n return string\n .replace(/^-ms-/, 'ms-')\n .replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n/**\n * 把驼峰法转为用 - 分隔的字符串(如 boxSizing 转换为 box-sizing)\n * @param string\n */\nfunction toKebabCase(string) {\n return string.replace(/[A-Z]/g, (replacer) => '-' + replacer.toLowerCase());\n}\n/**\n * 获取元素的样式值\n * @param element\n * @param name\n */\nfunction getComputedStyleValue(element, name) {\n return window.getComputedStyle(element).getPropertyValue(toKebabCase(name));\n}\n/**\n * 检查元素的 box-sizing 是否是 border-box\n * @param element\n */\nfunction isBorderBox(element) {\n return getComputedStyleValue(element, 'box-sizing') === 'border-box';\n}\n/**\n * 获取元素的 padding, border, margin 宽度(两侧宽度的和,单位为px)\n * @param element\n * @param direction\n * @param extra\n */\nfunction getExtraWidth(element, direction, extra) {\n const position = direction === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n return [0, 1].reduce((prev, _, index) => {\n let prop = extra + position[index];\n if (extra === 'border') {\n prop += 'Width';\n }\n return prev + parseFloat(getComputedStyleValue(element, prop) || '0');\n }, 0);\n}\n/**\n * 获取元素的样式值,对 width 和 height 进行过处理\n * @param element\n * @param name\n */\nfunction getStyle(element, name) {\n // width、height 属性使用 getComputedStyle 得到的值不准确,需要使用 getBoundingClientRect 获取\n if (name === 'width' || name === 'height') {\n const valueNumber = element.getBoundingClientRect()[name];\n if (isBorderBox(element)) {\n return `${valueNumber}px`;\n }\n return `${valueNumber -\n getExtraWidth(element, name, 'border') -\n getExtraWidth(element, name, 'padding')}px`;\n }\n return getComputedStyleValue(element, name);\n}\n/**\n * 获取子节点组成的数组\n * @param target\n * @param parent\n */\nfunction getChildNodesArray(target, parent) {\n const tempParent = document.createElement(parent);\n tempParent.innerHTML = target;\n return [].slice.call(tempParent.childNodes);\n}\n/**\n * 始终返回 false 的函数\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 数值单位的 CSS 属性\n */\nconst cssNumber = [\n 'animationIterationCount',\n 'columnCount',\n 'fillOpacity',\n 'flexGrow',\n 'flexShrink',\n 'fontWeight',\n 'gridArea',\n 'gridColumn',\n 'gridColumnEnd',\n 'gridColumnStart',\n 'gridRow',\n 'gridRowEnd',\n 'gridRowStart',\n 'lineHeight',\n 'opacity',\n 'order',\n 'orphans',\n 'widows',\n 'zIndex',\n 'zoom',\n];\nexport { isNodeName, isArrayLike, isObjectLike, isFunction, isString, isNumber, isBoolean, isUndefined, isNull, isWindow, isDocument, isElement, isNode, isIE, toElement, toCamelCase, toKebabCase, getComputedStyleValue, isBorderBox, getExtraWidth, getStyle, getChildNodesArray, returnFalse, cssNumber, };\n","import { isArrayLike } from '../utils';\nfunction each(target, callback) {\n if (isArrayLike(target)) {\n for (let i = 0; i < target.length; i += 1) {\n if (callback.call(target[i], i, target[i]) === false) {\n return target;\n }\n }\n }\n else {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i += 1) {\n if (callback.call(target[keys[i]], keys[i], target[keys[i]]) === false) {\n return target;\n }\n }\n }\n return target;\n}\nexport default each;\n","import each from './functions/each';\n/**\n * 为了使用模块扩充,这里不能使用默认导出\n */\nexport class JQ {\n constructor(arr) {\n this.length = 0;\n if (!arr) {\n return this;\n }\n each(arr, (i, item) => {\n // @ts-ignore\n this[i] = item;\n });\n this.length = arr.length;\n return this;\n }\n}\n","import each from './functions/each';\nimport { JQ } from './JQ';\nimport { getChildNodesArray, isArrayLike, isFunction, isNode, isString, } from './utils';\nfunction get$() {\n const $ = function (selector) {\n if (!selector) {\n return new JQ();\n }\n // JQ\n if (selector instanceof JQ) {\n return selector;\n }\n // function\n if (isFunction(selector)) {\n if (/complete|loaded|interactive/.test(document.readyState) &&\n document.body) {\n selector.call(document, $);\n }\n else {\n document.addEventListener('DOMContentLoaded', () => selector.call(document, $), false);\n }\n return new JQ([document]);\n }\n // String\n if (isString(selector)) {\n const html = selector.trim();\n // 根据 HTML 字符串创建 JQ 对象\n if (html[0] === '<' && html[html.length - 1] === '>') {\n let toCreate = 'div';\n const tags = {\n li: 'ul',\n tr: 'tbody',\n td: 'tr',\n th: 'tr',\n tbody: 'table',\n option: 'select',\n };\n each(tags, (childTag, parentTag) => {\n if (html.indexOf(`<${childTag}`) === 0) {\n toCreate = parentTag;\n return false;\n }\n return;\n });\n return new JQ(getChildNodesArray(html, toCreate));\n }\n // 根据 CSS 选择器创建 JQ 对象\n const isIdSelector = selector[0] === '#' && !selector.match(/[ .<>:~]/);\n if (!isIdSelector) {\n return new JQ(document.querySelectorAll(selector));\n }\n const element = document.getElementById(selector.slice(1));\n if (element) {\n return new JQ([element]);\n }\n return new JQ();\n }\n if (isArrayLike(selector) && !isNode(selector)) {\n return new JQ(selector);\n }\n return new JQ([selector]);\n };\n $.fn = JQ.prototype;\n return $;\n}\nconst $ = get$();\nexport default $;\n","import $ from 'mdui.jq/es/$';\n\nconst $document = $(document);\nconst $window = $(window);\nconst $body = $('body');\n\nexport { $document, $window, $body };\n","import { MduiStatic } from './interfaces/MduiStatic';\nimport $ from 'mdui.jq/es/$';\nimport { $body } from './utils/dom';\n\n// 避免页面加载完后直接执行css动画\n// https://css-tricks.com/transitions-only-after-page-load/\nsetTimeout(() => $body.addClass('mdui-loaded'));\n\nconst mdui = {\n $: $,\n} as MduiStatic;\n\nexport default mdui;\n","import { toElement } from '../utils';\n/**\n * 检查 container 元素内是否包含 contains 元素\n * @param container 父元素\n * @param contains 子元素\n * @example\n```js\ncontains( document, document.body ); // true\ncontains( document.getElementById('test'), document ); // false\ncontains( $('.container').get(0), $('.contains').get(0) ); // false\n```\n */\nfunction contains(container, contains) {\n return container !== contains && toElement(container).contains(contains);\n}\nexport default contains;\n","import each from './each';\n/**\n * 把第二个数组的元素追加到第一个数组中,并返回合并后的数组\n * @param first 第一个数组\n * @param second 该数组的元素将被追加到第一个数组中\n * @example\n```js\nmerge( [ 0, 1, 2 ], [ 2, 3, 4 ] )\n// [ 0, 1, 2, 2, 3, 4 ]\n```\n */\nfunction merge(first, second) {\n each(second, (_, value) => {\n first.push(value);\n });\n return first;\n}\nexport default merge;\n","import $ from '../$';\nimport each from '../functions/each';\n$.fn.each = function (callback) {\n return each(this, callback);\n};\n","import $ from '../$';\n$.fn.get = function (index) {\n return index === undefined\n ? [].slice.call(this)\n : this[index >= 0 ? index : index + this.length];\n};\n","import $ from '../$';\nimport merge from '../functions/merge';\nimport { JQ } from '../JQ';\nimport './each';\nimport './get';\n$.fn.find = function (selector) {\n const foundElements = [];\n this.each((_, element) => {\n merge(foundElements, $(element.querySelectorAll(selector)).get());\n });\n return new JQ(foundElements);\n};\n","import $ from '../../$';\nimport contains from '../../functions/contains';\nimport { isObjectLike } from '../../utils';\nimport '../find';\n// 存储事件\nconst handlers = {};\n// 元素ID\nlet mduiElementId = 1;\n/**\n * 为元素赋予一个唯一的ID\n */\nfunction getElementId(element) {\n const key = '_mduiEventId';\n // @ts-ignore\n if (!element[key]) {\n // @ts-ignore\n element[key] = ++mduiElementId;\n }\n // @ts-ignore\n return element[key];\n}\n/**\n * 解析事件名中的命名空间\n */\nfunction parse(type) {\n const parts = type.split('.');\n return {\n type: parts[0],\n ns: parts.slice(1).sort().join(' '),\n };\n}\n/**\n * 命名空间匹配规则\n */\nfunction matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');\n}\n/**\n * 获取匹配的事件\n * @param element\n * @param type\n * @param func\n * @param selector\n */\nfunction getHandlers(element, type, func, selector) {\n const event = parse(type);\n return (handlers[getElementId(element)] || []).filter((handler) => handler &&\n (!event.type || handler.type === event.type) &&\n (!event.ns || matcherFor(event.ns).test(handler.ns)) &&\n (!func || getElementId(handler.func) === getElementId(func)) &&\n (!selector || handler.selector === selector));\n}\n/**\n * 添加事件监听\n * @param element\n * @param types\n * @param func\n * @param data\n * @param selector\n */\nfunction add(element, types, func, data, selector) {\n const elementId = getElementId(element);\n if (!handlers[elementId]) {\n handlers[elementId] = [];\n }\n // 传入 data.useCapture 来设置 useCapture: true\n let useCapture = false;\n if (isObjectLike(data) && data.useCapture) {\n useCapture = true;\n }\n types.split(' ').forEach((type) => {\n if (!type) {\n return;\n }\n const event = parse(type);\n function callFn(e, elem) {\n // 因为鼠标事件模拟事件的 detail 属性是只读的,因此在 e._detail 中存储参数\n const result = func.apply(elem, \n // @ts-ignore\n e._detail === undefined ? [e] : [e].concat(e._detail));\n if (result === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n function proxyFn(e) {\n // @ts-ignore\n if (e._ns && !matcherFor(e._ns).test(event.ns)) {\n return;\n }\n // @ts-ignore\n e._data = data;\n if (selector) {\n // 事件代理\n $(element)\n .find(selector)\n .get()\n .reverse()\n .forEach((elem) => {\n if (elem === e.target ||\n contains(elem, e.target)) {\n callFn(e, elem);\n }\n });\n }\n else {\n // 不使用事件代理\n callFn(e, element);\n }\n }\n const handler = {\n type: event.type,\n ns: event.ns,\n func,\n selector,\n id: handlers[elementId].length,\n proxy: proxyFn,\n };\n handlers[elementId].push(handler);\n element.addEventListener(handler.type, proxyFn, useCapture);\n });\n}\n/**\n * 移除事件监听\n * @param element\n * @param types\n * @param func\n * @param selector\n */\nfunction remove(element, types, func, selector) {\n const handlersInElement = handlers[getElementId(element)] || [];\n const removeEvent = (handler) => {\n delete handlersInElement[handler.id];\n element.removeEventListener(handler.type, handler.proxy, false);\n };\n if (!types) {\n handlersInElement.forEach((handler) => removeEvent(handler));\n }\n else {\n types.split(' ').forEach((type) => {\n if (type) {\n getHandlers(element, type, func, selector).forEach((handler) => removeEvent(handler));\n }\n });\n }\n}\nexport { parse, add, remove };\n","import each from '../functions/each';\nimport { isUndefined } from '../utils';\nfunction extend(target, object1, ...objectN) {\n objectN.unshift(object1);\n each(objectN, (_, object) => {\n each(object, (prop, value) => {\n if (!isUndefined(value)) {\n target[prop] = value;\n }\n });\n });\n return target;\n}\nexport default extend;\n","import { isObjectLike } from '../utils';\nimport each from './each';\n/**\n * 将数组或对象序列化,序列化后的字符串可作为 URL 查询字符串使用\n *\n * 若传入数组,则格式必须和 serializeArray 方法的返回值一样\n * @param obj 对象或数组\n * @example\n```js\nparam({ width: 1680, height: 1050 });\n// width=1680&height=1050\n```\n * @example\n```js\nparam({ foo: { one: 1, two: 2 }})\n// foo[one]=1&foo[two]=2\n```\n * @example\n```js\nparam({ids: [1, 2, 3]})\n// ids[]=1&ids[]=2&ids[]=3\n```\n * @example\n```js\nparam([\n {\"name\":\"name\",\"value\":\"mdui\"},\n {\"name\":\"password\",\"value\":\"123456\"}\n])\n// name=mdui&password=123456\n```\n */\nfunction param(obj) {\n if (!isObjectLike(obj) && !Array.isArray(obj)) {\n return '';\n }\n const args = [];\n function destructure(key, value) {\n let keyTmp;\n if (isObjectLike(value)) {\n each(value, (i, v) => {\n if (Array.isArray(value) && !isObjectLike(v)) {\n keyTmp = '';\n }\n else {\n keyTmp = i;\n }\n destructure(`${key}[${keyTmp}]`, v);\n });\n }\n else {\n if (value == null || value === '') {\n keyTmp = '=';\n }\n else {\n keyTmp = `=${encodeURIComponent(value)}`;\n }\n args.push(encodeURIComponent(key) + keyTmp);\n }\n }\n if (Array.isArray(obj)) {\n each(obj, function () {\n destructure(this.name, this.value);\n });\n }\n else {\n each(obj, destructure);\n }\n return args.join('&');\n}\nexport default param;\n","import $ from '../$';\nimport './each';\nimport { parse } from './utils/event';\n$.fn.trigger = function (type, extraParameters) {\n const event = parse(type);\n let eventObject;\n const eventParams = {\n bubbles: true,\n cancelable: true,\n };\n const isMouseEvent = ['click', 'mousedown', 'mouseup', 'mousemove'].indexOf(event.type) > -1;\n if (isMouseEvent) {\n // Note: MouseEvent 无法传入 detail 参数\n eventObject = new MouseEvent(event.type, eventParams);\n }\n else {\n eventParams.detail = extraParameters;\n eventObject = new CustomEvent(event.type, eventParams);\n }\n // @ts-ignore\n eventObject._detail = extraParameters;\n // @ts-ignore\n eventObject._ns = event.ns;\n return this.each(function () {\n this.dispatchEvent(eventObject);\n });\n};\n","// 全局配置参数\nconst globalOptions = {};\n// 全局事件名\nconst ajaxEvents = {\n ajaxStart: 'start.mdui.ajax',\n ajaxSuccess: 'success.mdui.ajax',\n ajaxError: 'error.mdui.ajax',\n ajaxComplete: 'complete.mdui.ajax',\n};\nexport { globalOptions, ajaxEvents };\n","import $ from '../$';\nimport '../methods/trigger';\nimport { isString, isUndefined } from '../utils';\nimport each from './each';\nimport extend from './extend';\nimport param from './param';\nimport { ajaxEvents, globalOptions } from './utils/ajax';\n/**\n * 判断此请求方法是否通过查询字符串提交参数\n * @param method 请求方法,大写\n */\nfunction isQueryStringData(method) {\n return ['GET', 'HEAD'].indexOf(method) >= 0;\n}\n/**\n * 添加参数到 URL 上,且 URL 中不存在 ? 时,自动把第一个 & 替换为 ?\n * @param url\n * @param query\n */\nfunction appendQuery(url, query) {\n return `${url}&${query}`.replace(/[&?]{1,2}/, '?');\n}\n/**\n * 合并请求参数,参数优先级:options > globalOptions > defaults\n * @param options\n */\nfunction mergeOptions(options) {\n // 默认参数\n const defaults = {\n url: '',\n method: 'GET',\n data: '',\n processData: true,\n async: true,\n cache: true,\n username: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n global: true,\n };\n // globalOptions 中的回调函数不合并\n each(globalOptions, (key, value) => {\n const callbacks = [\n 'beforeSend',\n 'success',\n 'error',\n 'complete',\n 'statusCode',\n ];\n // @ts-ignore\n if (callbacks.indexOf(key) < 0 && !isUndefined(value)) {\n defaults[key] = value;\n }\n });\n return extend({}, defaults, options);\n}\n/**\n * 发送 ajax 请求\n * @param options\n * @example\n```js\najax({\n method: \"POST\",\n url: \"some.php\",\n data: { name: \"John\", location: \"Boston\" }\n}).then(function( msg ) {\n alert( \"Data Saved: \" + msg );\n});\n```\n */\nfunction ajax(options) {\n // 是否已取消请求\n let isCanceled = false;\n // 事件参数\n const eventParams = {};\n // 参数合并\n const mergedOptions = mergeOptions(options);\n let url = mergedOptions.url || window.location.toString();\n const method = mergedOptions.method.toUpperCase();\n let data = mergedOptions.data;\n const processData = mergedOptions.processData;\n const async = mergedOptions.async;\n const cache = mergedOptions.cache;\n const username = mergedOptions.username;\n const password = mergedOptions.password;\n const headers = mergedOptions.headers;\n const xhrFields = mergedOptions.xhrFields;\n const statusCode = mergedOptions.statusCode;\n const dataType = mergedOptions.dataType;\n const contentType = mergedOptions.contentType;\n const timeout = mergedOptions.timeout;\n const global = mergedOptions.global;\n // 需要发送的数据\n // GET/HEAD 请求和 processData 为 true 时,转换为查询字符串格式,特殊格式不转换\n if (data &&\n (isQueryStringData(method) || processData) &&\n !isString(data) &&\n !(data instanceof ArrayBuffer) &&\n !(data instanceof Blob) &&\n !(data instanceof Document) &&\n !(data instanceof FormData)) {\n data = param(data);\n }\n // 对于 GET、HEAD 类型的请求,把 data 数据添加到 URL 中\n if (data && isQueryStringData(method)) {\n // 查询字符串拼接到 URL 中\n url = appendQuery(url, data);\n data = null;\n }\n /**\n * 触发事件和回调函数\n * @param event\n * @param params\n * @param callback\n * @param args\n */\n function trigger(event, params, callback, ...args) {\n // 触发全局事件\n if (global) {\n $(document).trigger(event, params);\n }\n // 触发 ajax 回调和事件\n let result1;\n let result2;\n if (callback) {\n // 全局回调\n if (callback in globalOptions) {\n // @ts-ignore\n result1 = globalOptions[callback](...args);\n }\n // 自定义回调\n if (mergedOptions[callback]) {\n // @ts-ignore\n result2 = mergedOptions[callback](...args);\n }\n // beforeSend 回调返回 false 时取消 ajax 请求\n if (callback === 'beforeSend' &&\n (result1 === false || result2 === false)) {\n isCanceled = true;\n }\n }\n }\n // XMLHttpRequest 请求\n function XHR() {\n let textStatus;\n return new Promise((resolve, reject) => {\n // GET/HEAD 请求的缓存处理\n if (isQueryStringData(method) && !cache) {\n url = appendQuery(url, `_=${Date.now()}`);\n }\n // 创建 XHR\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, async, username, password);\n if (contentType ||\n (data && !isQueryStringData(method) && contentType !== false)) {\n xhr.setRequestHeader('Content-Type', contentType);\n }\n // 设置 Accept\n if (dataType === 'json') {\n xhr.setRequestHeader('Accept', 'application/json, text/javascript');\n }\n // 添加 headers\n if (headers) {\n each(headers, (key, value) => {\n // undefined 值不发送,string 和 null 需要发送\n if (!isUndefined(value)) {\n xhr.setRequestHeader(key, value + ''); // 把 null 转换成字符串\n }\n });\n }\n // 检查是否是跨域请求,跨域请求时不添加 X-Requested-With\n const crossDomain = /^([\\w-]+:)?\\/\\/([^/]+)/.test(url) &&\n RegExp.$2 !== window.location.host;\n if (!crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n if (xhrFields) {\n each(xhrFields, (key, value) => {\n // @ts-ignore\n xhr[key] = value;\n });\n }\n eventParams.xhr = xhr;\n eventParams.options = mergedOptions;\n let xhrTimeout;\n xhr.onload = function () {\n if (xhrTimeout) {\n clearTimeout(xhrTimeout);\n }\n // AJAX 返回的 HTTP 响应码是否表示成功\n const isHttpStatusSuccess = (xhr.status >= 200 && xhr.status < 300) ||\n xhr.status === 304 ||\n xhr.status === 0;\n let responseData;\n if (isHttpStatusSuccess) {\n if (xhr.status === 204 || method === 'HEAD') {\n textStatus = 'nocontent';\n }\n else if (xhr.status === 304) {\n textStatus = 'notmodified';\n }\n else {\n textStatus = 'success';\n }\n if (dataType === 'json') {\n try {\n responseData =\n method === 'HEAD' ? undefined : JSON.parse(xhr.responseText);\n eventParams.data = responseData;\n }\n catch (err) {\n textStatus = 'parsererror';\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, textStatus);\n reject(new Error(textStatus));\n }\n if (textStatus !== 'parsererror') {\n trigger(ajaxEvents.ajaxSuccess, eventParams, 'success', responseData, textStatus, xhr);\n resolve(responseData);\n }\n }\n else {\n responseData =\n method === 'HEAD'\n ? undefined\n : xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n eventParams.data = responseData;\n trigger(ajaxEvents.ajaxSuccess, eventParams, 'success', responseData, textStatus, xhr);\n resolve(responseData);\n }\n }\n else {\n textStatus = 'error';\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, textStatus);\n reject(new Error(textStatus));\n }\n // statusCode\n each([globalOptions.statusCode, statusCode], (_, func) => {\n if (func && func[xhr.status]) {\n if (isHttpStatusSuccess) {\n func[xhr.status](responseData, textStatus, xhr);\n }\n else {\n func[xhr.status](xhr, textStatus);\n }\n }\n });\n trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, textStatus);\n };\n xhr.onerror = function () {\n if (xhrTimeout) {\n clearTimeout(xhrTimeout);\n }\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, xhr.statusText);\n trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, 'error');\n reject(new Error(xhr.statusText));\n };\n xhr.onabort = function () {\n let statusText = 'abort';\n if (xhrTimeout) {\n statusText = 'timeout';\n clearTimeout(xhrTimeout);\n }\n trigger(ajaxEvents.ajaxError, eventParams, 'error', xhr, statusText);\n trigger(ajaxEvents.ajaxComplete, eventParams, 'complete', xhr, statusText);\n reject(new Error(statusText));\n };\n // ajax start 回调\n trigger(ajaxEvents.ajaxStart, eventParams, 'beforeSend', xhr);\n if (isCanceled) {\n reject(new Error('cancel'));\n return;\n }\n // Timeout\n if (timeout > 0) {\n xhrTimeout = setTimeout(() => {\n xhr.abort();\n }, timeout);\n }\n // 发送 XHR\n xhr.send(data);\n });\n }\n return XHR();\n}\nexport default ajax;\n","import $ from '../$';\nimport ajax from '../functions/ajax';\n$.ajax = ajax;\n","import $ from '../$';\nimport ajaxSetup from '../functions/ajaxSetup';\n$.ajaxSetup = ajaxSetup;\n","import extend from '../functions/extend';\nimport { globalOptions } from './utils/ajax';\n/**\n * 为 Ajax 请求设置全局配置参数\n * @param options 键值对参数\n * @example\n```js\najaxSetup({\n dataType: 'json',\n method: 'POST',\n});\n```\n */\nfunction ajaxSetup(options) {\n return extend(globalOptions, options);\n}\nexport default ajaxSetup;\n","import $ from '../$';\nimport contains from '../functions/contains';\n$.contains = contains;\n","const dataNS = '_mduiElementDataStorage';\nexport default dataNS;\n","import { isObjectLike, isUndefined, toCamelCase } from '../utils';\nimport each from './each';\nimport dataNS from './utils/data';\n/**\n * 在元素上设置键值对数据\n * @param element\n * @param object\n */\nfunction setObjectToElement(element, object) {\n // @ts-ignore\n if (!element[dataNS]) {\n // @ts-ignore\n element[dataNS] = {};\n }\n each(object, (key, value) => {\n // @ts-ignore\n element[dataNS][toCamelCase(key)] = value;\n });\n}\nfunction data(element, key, value) {\n // 根据键值对设置值\n // data(element, { 'key' : 'value' })\n if (isObjectLike(key)) {\n setObjectToElement(element, key);\n return key;\n }\n // 根据 key、value 设置值\n // data(element, 'key', 'value')\n if (!isUndefined(value)) {\n setObjectToElement(element, { [key]: value });\n return value;\n }\n // 获取所有值\n // data(element)\n if (isUndefined(key)) {\n // @ts-ignore\n return element[dataNS] ? element[dataNS] : {};\n }\n // 从 dataNS 中获取指定值\n // data(element, 'key')\n key = toCamelCase(key);\n // @ts-ignore\n if (element[dataNS] && key in element[dataNS]) {\n // @ts-ignore\n return element[dataNS][key];\n }\n return undefined;\n}\nexport default data;\n","import each from './each';\nfunction map(elements, callback) {\n let value;\n const ret = [];\n each(elements, (i, element) => {\n value = callback.call(window, element, i);\n if (value != null) {\n ret.push(value);\n }\n });\n return [].concat(...ret);\n}\nexport default map;\n","import each from '../functions/each';\nimport { isUndefined, isString, toCamelCase } from '../utils';\nimport dataNS from './utils/data';\n/**\n * 移除指定元素上存放的数据\n * @param element 存放数据的元素\n * @param name\n * 数据键名\n *\n * 若未指定键名,将移除元素上所有数据\n *\n * 多个键名可以用空格分隔,或者用数组表示多个键名\n @example\n```js\n// 移除元素上键名为 name 的数据\nremoveData(document.body, 'name');\n```\n * @example\n```js\n// 移除元素上键名为 name1 和 name2 的数据\nremoveData(document.body, 'name1 name2');\n```\n * @example\n```js\n// 移除元素上键名为 name1 和 name2 的数据\nremoveData(document.body, ['name1', 'name2']);\n```\n * @example\n```js\n// 移除元素上所有数据\nremoveData(document.body);\n```\n */\nfunction removeData(element, name) {\n // @ts-ignore\n if (!element[dataNS]) {\n return;\n }\n const remove = (nameItem) => {\n nameItem = toCamelCase(nameItem);\n // @ts-ignore\n if (element[dataNS][nameItem]) {\n // @ts-ignore\n element[dataNS][nameItem] = null;\n // @ts-ignore\n delete element[dataNS][nameItem];\n }\n };\n if (isUndefined(name)) {\n // @ts-ignore\n element[dataNS] = null;\n // @ts-ignore\n delete element[dataNS];\n // @ts-ignore\n }\n else if (isString(name)) {\n name\n .split(' ')\n .filter((nameItem) => nameItem)\n .forEach((nameItem) => remove(nameItem));\n }\n else {\n each(name, (_, nameItem) => remove(nameItem));\n }\n}\nexport default removeData;\n","import each from './each';\n/**\n * 过滤掉数组中的重复元素\n * @param arr 数组\n * @example\n```js\nunique([1, 2, 12, 3, 2, 1, 2, 1, 1]);\n// [1, 2, 12, 3]\n```\n */\nfunction unique(arr) {\n const result = [];\n each(arr, (_, val) => {\n if (result.indexOf(val) === -1) {\n result.push(val);\n }\n });\n return result;\n}\nexport default unique;\n","import $ from '../../$';\nimport unique from '../../functions/unique';\nimport { JQ } from '../../JQ';\nimport { isElement } from '../../utils';\nimport '../each';\nimport '../is';\nexport default function dir($elements, nameIndex, node, selector, filter) {\n const ret = [];\n let target;\n $elements.each((_, element) => {\n target = element[node];\n // 不能包含最顶层的 document 元素\n while (target && isElement(target)) {\n // prevUntil, nextUntil, parentsUntil\n if (nameIndex === 2) {\n if (selector && $(target).is(selector)) {\n break;\n }\n if (!filter || $(target).is(filter)) {\n ret.push(target);\n }\n }\n // prev, next, parent\n else if (nameIndex === 0) {\n if (!selector || $(target).is(selector)) {\n ret.push(target);\n }\n break;\n }\n // prevAll, nextAll, parents\n else {\n if (!selector || $(target).is(selector)) {\n ret.push(target);\n }\n }\n // @ts-ignore\n target = target[node];\n }\n });\n return new JQ(unique(ret));\n}\n","import $ from '../$';\nimport data from '../functions/data';\n$.data = data;\n","import $ from '../$';\nimport each from '../functions/each';\n$.each = each;\n","import $ from '../$';\nimport each from '../functions/each';\nimport extend from '../functions/extend';\n$.extend = function (...objectN) {\n if (objectN.length === 1) {\n each(objectN[0], (prop, value) => {\n this[prop] = value;\n });\n return this;\n }\n return extend(objectN.shift(), objectN.shift(), ...objectN);\n};\n","import $ from '../$';\nimport map from '../functions/map';\n$.map = map;\n","import $ from '../$';\nimport merge from '../functions/merge';\n$.merge = merge;\n","import $ from '../$';\nimport param from '../functions/param';\n$.param = param;\n","import $ from '../$';\nimport removeData from '../functions/removeData';\n$.removeData = removeData;\n","import $ from '../$';\nimport unique from '../functions/unique';\n$.unique = unique;\n","import $ from '../$';\nimport merge from '../functions/merge';\nimport unique from '../functions/unique';\nimport { JQ } from '../JQ';\nimport './get';\n$.fn.add = function (selector) {\n return new JQ(unique(merge(this.get(), $(selector).get())));\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isElement, isFunction } from '../utils';\nimport './each';\neach(['add', 'remove', 'toggle'], (_, name) => {\n $.fn[`${name}Class`] = function (className) {\n if (name === 'remove' && !arguments.length) {\n return this.each((_, element) => {\n element.setAttribute('class', '');\n });\n }\n return this.each((i, element) => {\n if (!isElement(element)) {\n return;\n }\n const classes = (isFunction(className)\n ? className.call(element, i, element.getAttribute('class') || '')\n : className)\n .split(' ')\n .filter((name) => name);\n each(classes, (_, cls) => {\n element.classList[name](cls);\n });\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport './each';\neach(['insertBefore', 'insertAfter'], (nameIndex, name) => {\n $.fn[name] = function (target) {\n const $element = nameIndex ? $(this.get().reverse()) : this; // 顺序和 jQuery 保持一致\n const $target = $(target);\n const result = [];\n $target.each((index, target) => {\n if (!target.parentNode) {\n return;\n }\n $element.each((_, element) => {\n const newItem = index\n ? element.cloneNode(true)\n : element;\n const existingItem = nameIndex ? target.nextSibling : target;\n result.push(newItem);\n target.parentNode.insertBefore(newItem, existingItem);\n });\n });\n return $(nameIndex ? result.reverse() : result);\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport { getChildNodesArray, isFunction, isString, isElement } from '../utils';\nimport './each';\nimport './insertAfter';\nimport './insertBefore';\n/**\n * 是否不是 HTML 字符串(包裹在 <> 中)\n * @param target\n */\nfunction isPlainText(target) {\n return (isString(target) && (target[0] !== '<' || target[target.length - 1] !== '>'));\n}\neach(['before', 'after'], (nameIndex, name) => {\n $.fn[name] = function (...args) {\n // after 方法,多个参数需要按参数顺序添加到元素后面,所以需要将参数顺序反向处理\n if (nameIndex === 1) {\n args = args.reverse();\n }\n return this.each((index, element) => {\n const targets = isFunction(args[0])\n ? [args[0].call(element, index, element.innerHTML)]\n : args;\n each(targets, (_, target) => {\n let $target;\n if (isPlainText(target)) {\n $target = $(getChildNodesArray(target, 'div'));\n }\n else if (index && isElement(target)) {\n $target = $(target.cloneNode(true));\n }\n else {\n $target = $(target);\n }\n $target[nameIndex ? 'insertAfter' : 'insertBefore'](element);\n });\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isFunction, isObjectLike, returnFalse } from '../utils';\nimport './each';\nimport { remove } from './utils/event';\n$.fn.off = function (types, selector, callback) {\n // types 是对象\n if (isObjectLike(types)) {\n each(types, (type, fn) => {\n // this.off('click', undefined, function () {})\n // this.off('click', '.box', function () {})\n this.off(type, selector, fn);\n });\n return this;\n }\n // selector 不存在\n if (selector === false || isFunction(selector)) {\n callback = selector;\n selector = undefined;\n // this.off('click', undefined, function () {})\n }\n // callback 传入 `false`,相当于 `return false`\n if (callback === false) {\n callback = returnFalse;\n }\n return this.each(function () {\n remove(this, types, callback, selector);\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isObjectLike, isString, returnFalse } from '../utils';\nimport './each';\nimport './off';\nimport { add } from './utils/event';\n$.fn.on = function (types, selector, data, callback, one) {\n // types 可以是 type/func 对象\n if (isObjectLike(types)) {\n // (types-Object, selector, data)\n if (!isString(selector)) {\n // (types-Object, data)\n data = data || selector;\n selector = undefined;\n }\n each(types, (type, fn) => {\n // selector 和 data 都可能是 undefined\n // @ts-ignore\n this.on(type, selector, data, fn, one);\n });\n return this;\n }\n if (data == null && callback == null) {\n // (types, fn)\n callback = selector;\n data = selector = undefined;\n }\n else if (callback == null) {\n if (isString(selector)) {\n // (types, selector, fn)\n callback = data;\n data = undefined;\n }\n else {\n // (types, data, fn)\n callback = data;\n data = selector;\n selector = undefined;\n }\n }\n if (callback === false) {\n callback = returnFalse;\n }\n else if (!callback) {\n return this;\n }\n // $().one()\n if (one) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const origCallback = callback;\n callback = function (event) {\n _this.off(event.type, selector, callback);\n // eslint-disable-next-line prefer-rest-params\n return origCallback.apply(this, arguments);\n };\n }\n return this.each(function () {\n add(this, types, callback, data, selector);\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { ajaxEvents } from '../functions/utils/ajax';\nimport './on';\neach(ajaxEvents, (name, eventName) => {\n $.fn[name] = function (fn) {\n return this.on(eventName, (e, params) => {\n fn(e, params.xhr, params.options, params.data);\n });\n };\n});\n","import $ from '../$';\nimport map from '../functions/map';\nimport { JQ } from '../JQ';\n$.fn.map = function (callback) {\n return new JQ(map(this, (element, i) => callback.call(element, i, element)));\n};\n","import $ from '../$';\nimport './map';\n$.fn.clone = function () {\n return this.map(function () {\n return this.cloneNode(true);\n });\n};\n","import $ from '../$';\nimport { isDocument, isFunction, isString, isWindow } from '../utils';\nimport './each';\n$.fn.is = function (selector) {\n let isMatched = false;\n if (isFunction(selector)) {\n this.each((index, element) => {\n if (selector.call(element, index, element)) {\n isMatched = true;\n }\n });\n return isMatched;\n }\n if (isString(selector)) {\n this.each((_, element) => {\n if (isDocument(element) || isWindow(element)) {\n return;\n }\n // @ts-ignore\n const matches = element.matches || element.msMatchesSelector;\n if (matches.call(element, selector)) {\n isMatched = true;\n }\n });\n return isMatched;\n }\n const $compareWith = $(selector);\n this.each((_, element) => {\n $compareWith.each((_, compare) => {\n if (element === compare) {\n isMatched = true;\n }\n });\n });\n return isMatched;\n};\n","import $ from '../$';\nimport './each';\nimport './is';\n$.fn.remove = function (selector) {\n return this.each((_, element) => {\n if (element.parentNode && (!selector || $(element).is(selector))) {\n element.parentNode.removeChild(element);\n }\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isFunction, isString } from '../utils';\nimport './after';\nimport './before';\nimport './clone';\nimport './each';\nimport './map';\nimport './remove';\neach(['prepend', 'append'], (nameIndex, name) => {\n $.fn[name] = function (...args) {\n return this.each((index, element) => {\n const childNodes = element.childNodes;\n const childLength = childNodes.length;\n const child = childLength\n ? childNodes[nameIndex ? childLength - 1 : 0]\n : document.createElement('div');\n if (!childLength) {\n element.appendChild(child);\n }\n let contents = isFunction(args[0])\n ? [args[0].call(element, index, element.innerHTML)]\n : args;\n // 如果不是字符串,则仅第一个元素使用原始元素,其他的都克隆自第一个元素\n if (index) {\n contents = contents.map((content) => {\n return isString(content) ? content : $(content).clone();\n });\n }\n $(child)[nameIndex ? 'after' : 'before'](...contents);\n if (!childLength) {\n element.removeChild(child);\n }\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport './insertAfter';\nimport './insertBefore';\nimport './map';\nimport './remove';\neach(['appendTo', 'prependTo'], (nameIndex, name) => {\n $.fn[name] = function (target) {\n const extraChilds = [];\n const $target = $(target).map((_, element) => {\n const childNodes = element.childNodes;\n const childLength = childNodes.length;\n if (childLength) {\n return childNodes[nameIndex ? 0 : childLength - 1];\n }\n const child = document.createElement('div');\n element.appendChild(child);\n extraChilds.push(child);\n return child;\n });\n const $result = this[nameIndex ? 'insertBefore' : 'insertAfter']($target);\n $(extraChilds).remove();\n return $result;\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport { cssNumber, getStyle, isElement, isFunction, isNull, isNumber, isObjectLike, isUndefined, toCamelCase, } from '../utils';\nimport './each';\neach(['attr', 'prop', 'css'], (nameIndex, name) => {\n function set(element, key, value) {\n // 值为 undefined 时,不修改\n if (isUndefined(value)) {\n return;\n }\n switch (nameIndex) {\n // attr\n case 0:\n if (isNull(value)) {\n element.removeAttribute(key);\n }\n else {\n element.setAttribute(key, value);\n }\n break;\n // prop\n case 1:\n // @ts-ignore\n element[key] = value;\n break;\n // css\n default:\n key = toCamelCase(key);\n // @ts-ignore\n element.style[key] = isNumber(value)\n ? `${value}${cssNumber.indexOf(key) > -1 ? '' : 'px'}`\n : value;\n break;\n }\n }\n function get(element, key) {\n switch (nameIndex) {\n // attr\n case 0:\n // 属性不存在时,原生 getAttribute 方法返回 null,而 jquery 返回 undefined。这里和 jquery 保持一致\n const value = element.getAttribute(key);\n return isNull(value) ? undefined : value;\n // prop\n case 1:\n // @ts-ignore\n return element[key];\n // css\n default:\n return getStyle(element, key);\n }\n }\n $.fn[name] = function (key, value) {\n if (isObjectLike(key)) {\n each(key, (k, v) => {\n // @ts-ignore\n this[name](k, v);\n });\n return this;\n }\n if (arguments.length === 1) {\n const element = this[0];\n return isElement(element) ? get(element, key) : undefined;\n }\n return this.each((i, element) => {\n set(element, key, isFunction(value) ? value.call(element, i, get(element, key)) : value);\n });\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport unique from '../functions/unique';\nimport { JQ } from '../JQ';\nimport { isElement } from '../utils';\nimport './each';\nimport './is';\n$.fn.children = function (selector) {\n const children = [];\n this.each((_, element) => {\n each(element.childNodes, (__, childNode) => {\n if (!isElement(childNode)) {\n return;\n }\n if (!selector || $(childNode).is(selector)) {\n children.push(childNode);\n }\n });\n });\n return new JQ(unique(children));\n};\n","import $ from '../$';\nimport { JQ } from '../JQ';\n$.fn.slice = function (...args) {\n return new JQ([].slice.apply(this, args));\n};\n","import $ from '../$';\nimport { JQ } from '../JQ';\nimport './slice';\n$.fn.eq = function (index) {\n const ret = index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n return new JQ(ret);\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport './get';\nimport dir from './utils/dir';\neach(['', 's', 'sUntil'], (nameIndex, name) => {\n $.fn[`parent${name}`] = function (selector, filter) {\n // parents、parentsUntil 需要把元素的顺序反向处理,以便和 jQuery 的结果一致\n const $nodes = !nameIndex ? this : $(this.get().reverse());\n return dir($nodes, nameIndex, 'parentNode', selector, filter);\n };\n});\n","import $ from '../$';\nimport { JQ } from '../JQ';\nimport './eq';\nimport './is';\nimport './parents';\n$.fn.closest = function (selector) {\n if (this.is(selector)) {\n return this;\n }\n const matched = [];\n this.parents().each((_, element) => {\n if ($(element).is(selector)) {\n matched.push(element);\n return false;\n }\n });\n return new JQ(matched);\n};\n","import $ from '../$';\nimport data from '../functions/data';\nimport { isObjectLike, isString, isUndefined, toCamelCase, toKebabCase, } from '../utils';\nimport './each';\nconst rbrace = /^(?:{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/;\n// 从 `data-*` 中获取的值,需要经过该函数转换\nfunction getData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === 'null') {\n return null;\n }\n if (value === +value + '') {\n return +value;\n }\n if (rbrace.test(value)) {\n return JSON.parse(value);\n }\n return value;\n}\n// 若 value 不存在,则从 `data-*` 中获取值\nfunction dataAttr(element, key, value) {\n if (isUndefined(value) && element.nodeType === 1) {\n const name = 'data-' + toKebabCase(key);\n value = element.getAttribute(name);\n if (isString(value)) {\n try {\n value = getData(value);\n }\n catch (e) { }\n }\n else {\n value = undefined;\n }\n }\n return value;\n}\n$.fn.data = function (key, value) {\n // 获取所有值\n if (isUndefined(key)) {\n if (!this.length) {\n return undefined;\n }\n const element = this[0];\n const resultData = data(element);\n // window, document 上不存在 `data-*` 属性\n if (element.nodeType !== 1) {\n return resultData;\n }\n // 从 `data-*` 中获取值\n const attrs = element.attributes;\n let i = attrs.length;\n while (i--) {\n if (attrs[i]) {\n let name = attrs[i].name;\n if (name.indexOf('data-') === 0) {\n name = toCamelCase(name.slice(5));\n resultData[name] = dataAttr(element, name, resultData[name]);\n }\n }\n }\n return resultData;\n }\n // 同时设置多个值\n if (isObjectLike(key)) {\n return this.each(function () {\n data(this, key);\n });\n }\n // value 传入了 undefined\n if (arguments.length === 2 && isUndefined(value)) {\n return this;\n }\n // 设置值\n if (!isUndefined(value)) {\n return this.each(function () {\n data(this, key, value);\n });\n }\n // 获取值\n if (!this.length) {\n return undefined;\n }\n return dataAttr(this[0], key, data(this[0], key));\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport { isBoolean, isDocument, isFunction, isWindow, toElement, isBorderBox, getExtraWidth, getComputedStyleValue, isIE, } from '../utils';\nimport './css';\nimport './each';\n/**\n * 值上面的 padding、border、margin 处理\n * @param element\n * @param name\n * @param value\n * @param funcIndex\n * @param includeMargin\n * @param multiply\n */\nfunction handleExtraWidth(element, name, value, funcIndex, includeMargin, multiply) {\n // 获取元素的 padding, border, margin 宽度(两侧宽度的和)\n const getExtraWidthValue = (extra) => {\n return (getExtraWidth(element, name.toLowerCase(), extra) *\n multiply);\n };\n if (funcIndex === 2 && includeMargin) {\n value += getExtraWidthValue('margin');\n }\n if (isBorderBox(element)) {\n // IE 为 box-sizing: border-box 时,得到的值不含 border 和 padding,这里先修复\n // 仅获取时需要处理,multiply === 1 为 get\n if (isIE() && multiply === 1) {\n value += getExtraWidthValue('border');\n value += getExtraWidthValue('padding');\n }\n if (funcIndex === 0) {\n value -= getExtraWidthValue('border');\n }\n if (funcIndex === 1) {\n value -= getExtraWidthValue('border');\n value -= getExtraWidthValue('padding');\n }\n }\n else {\n if (funcIndex === 0) {\n value += getExtraWidthValue('padding');\n }\n if (funcIndex === 2) {\n value += getExtraWidthValue('border');\n value += getExtraWidthValue('padding');\n }\n }\n return value;\n}\n/**\n * 获取元素的样式值\n * @param element\n * @param name\n * @param funcIndex 0: innerWidth, innerHeight; 1: width, height; 2: outerWidth, outerHeight\n * @param includeMargin\n */\nfunction get(element, name, funcIndex, includeMargin) {\n const clientProp = `client${name}`;\n const scrollProp = `scroll${name}`;\n const offsetProp = `offset${name}`;\n const innerProp = `inner${name}`;\n // $(window).width()\n if (isWindow(element)) {\n // outerWidth, outerHeight 需要包含滚动条的宽度\n return funcIndex === 2\n ? element[innerProp]\n : toElement(document)[clientProp];\n }\n // $(document).width()\n if (isDocument(element)) {\n const doc = toElement(element);\n return Math.max(\n // @ts-ignore\n element.body[scrollProp], doc[scrollProp], \n // @ts-ignore\n element.body[offsetProp], doc[offsetProp], doc[clientProp]);\n }\n const value = parseFloat(getComputedStyleValue(element, name.toLowerCase()) || '0');\n return handleExtraWidth(element, name, value, funcIndex, includeMargin, 1);\n}\n/**\n * 设置元素的样式值\n * @param element\n * @param elementIndex\n * @param name\n * @param funcIndex 0: innerWidth, innerHeight; 1: width, height; 2: outerWidth, outerHeight\n * @param includeMargin\n * @param value\n */\nfunction set(element, elementIndex, name, funcIndex, includeMargin, value) {\n let computedValue = isFunction(value)\n ? value.call(element, elementIndex, get(element, name, funcIndex, includeMargin))\n : value;\n if (computedValue == null) {\n return;\n }\n const $element = $(element);\n const dimension = name.toLowerCase();\n // 特殊的值,不需要计算 padding、border、margin\n if (['auto', 'inherit', ''].indexOf(computedValue) > -1) {\n $element.css(dimension, computedValue);\n return;\n }\n // 其他值保留原始单位。注意:如果不使用 px 作为单位,则算出的值一般是不准确的\n const suffix = computedValue.toString().replace(/\\b[0-9.]*/, '');\n const numerical = parseFloat(computedValue);\n computedValue =\n handleExtraWidth(element, name, numerical, funcIndex, includeMargin, -1) +\n (suffix || 'px');\n $element.css(dimension, computedValue);\n}\neach(['Width', 'Height'], (_, name) => {\n each([`inner${name}`, name.toLowerCase(), `outer${name}`], (funcIndex, funcName) => {\n $.fn[funcName] = function (margin, value) {\n // 是否是赋值操作\n const isSet = arguments.length && (funcIndex < 2 || !isBoolean(margin));\n const includeMargin = margin === true || value === true;\n // 获取第一个元素的值\n if (!isSet) {\n return this.length\n ? get(this[0], name, funcIndex, includeMargin)\n : undefined;\n }\n // 设置每个元素的值\n return this.each((index, element) => set(element, index, name, funcIndex, includeMargin, margin));\n };\n });\n});\n","import $ from '../$';\nimport './css';\nimport './eq';\nimport './offset';\nimport './offsetParent';\nfunction floatStyle($element, name) {\n return parseFloat($element.css(name));\n}\n$.fn.position = function () {\n if (!this.length) {\n return undefined;\n }\n const $element = this.eq(0);\n let currentOffset;\n let parentOffset = {\n left: 0,\n top: 0,\n };\n if ($element.css('position') === 'fixed') {\n currentOffset = $element[0].getBoundingClientRect();\n }\n else {\n currentOffset = $element.offset();\n const $offsetParent = $element.offsetParent();\n parentOffset = $offsetParent.offset();\n parentOffset.top += floatStyle($offsetParent, 'border-top-width');\n parentOffset.left += floatStyle($offsetParent, 'border-left-width');\n }\n return {\n top: currentOffset.top - parentOffset.top - floatStyle($element, 'margin-top'),\n left: currentOffset.left -\n parentOffset.left -\n floatStyle($element, 'margin-left'),\n };\n};\n","import $ from '../$';\nimport extend from '../functions/extend';\nimport { isFunction } from '../utils';\nimport './css';\nimport './each';\nimport './position';\nfunction get(element) {\n if (!element.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n const rect = element.getBoundingClientRect();\n const win = element.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset,\n };\n}\nfunction set(element, value, index) {\n const $element = $(element);\n const position = $element.css('position');\n if (position === 'static') {\n $element.css('position', 'relative');\n }\n const currentOffset = get(element);\n const currentTopString = $element.css('top');\n const currentLeftString = $element.css('left');\n let currentTop;\n let currentLeft;\n const calculatePosition = (position === 'absolute' || position === 'fixed') &&\n (currentTopString + currentLeftString).indexOf('auto') > -1;\n if (calculatePosition) {\n const currentPosition = $element.position();\n currentTop = currentPosition.top;\n currentLeft = currentPosition.left;\n }\n else {\n currentTop = parseFloat(currentTopString);\n currentLeft = parseFloat(currentLeftString);\n }\n const computedValue = isFunction(value)\n ? value.call(element, index, extend({}, currentOffset))\n : value;\n $element.css({\n top: computedValue.top != null\n ? computedValue.top - currentOffset.top + currentTop\n : undefined,\n left: computedValue.left != null\n ? computedValue.left - currentOffset.left + currentLeft\n : undefined,\n });\n}\n$.fn.offset = function (value) {\n // 获取坐标\n if (!arguments.length) {\n if (!this.length) {\n return undefined;\n }\n return get(this[0]);\n }\n // 设置坐标\n return this.each(function (index) {\n set(this, value, index);\n });\n};\n","import $ from '../$';\nimport './each';\n$.fn.empty = function () {\n return this.each(function () {\n this.innerHTML = '';\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\n$.fn.extend = function (obj) {\n each(obj, (prop, value) => {\n // 在 JQ 对象上扩展方法时,需要自己添加 typescript 的类型定义\n $.fn[prop] = value;\n });\n return this;\n};\n","import $ from '../$';\nimport { isFunction, isString } from '../utils';\nimport './is';\nimport './map';\n$.fn.filter = function (selector) {\n if (isFunction(selector)) {\n return this.map((index, element) => selector.call(element, index, element) ? element : undefined);\n }\n if (isString(selector)) {\n return this.map((_, element) => $(element).is(selector) ? element : undefined);\n }\n const $selector = $(selector);\n return this.map((_, element) => $selector.get().indexOf(element) > -1 ? element : undefined);\n};\n","import $ from '../$';\nimport './eq';\n$.fn.first = function () {\n return this.eq(0);\n};\n","import $ from '../$';\nimport contains from '../functions/contains';\nimport { isString } from '../utils';\nimport './find';\n$.fn.has = function (selector) {\n const $targets = isString(selector) ? this.find(selector) : $(selector);\n const { length } = $targets;\n return this.map(function () {\n for (let i = 0; i < length; i += 1) {\n if (contains(this, $targets[i])) {\n return this;\n }\n }\n return;\n });\n};\n","import $ from '../$';\n$.fn.hasClass = function (className) {\n return this[0].classList.contains(className);\n};\n","import $ from '../$';\nimport './each';\n$.fn.hide = function () {\n return this.each(function () {\n this.style.display = 'none';\n });\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport map from '../functions/map';\nimport { isElement, isFunction, isUndefined, toElement } from '../utils';\nimport './each';\nimport './is';\neach(['val', 'html', 'text'], (nameIndex, name) => {\n const props = {\n 0: 'value',\n 1: 'innerHTML',\n 2: 'textContent',\n };\n const propName = props[nameIndex];\n function get($elements) {\n // text() 获取所有元素的文本\n if (nameIndex === 2) {\n // @ts-ignore\n return map($elements, (element) => toElement(element)[propName]).join('');\n }\n // 空集合时,val() 和 html() 返回 undefined\n if (!$elements.length) {\n return undefined;\n }\n // val() 和 html() 仅获取第一个元素的内容\n const firstElement = $elements[0];\n // select multiple 返回数组\n if (nameIndex === 0 && $(firstElement).is('select[multiple]')) {\n return map($(firstElement).find('option:checked'), (element) => element.value);\n }\n // @ts-ignore\n return firstElement[propName];\n }\n function set(element, value) {\n // text() 和 html() 赋值为 undefined,则保持原内容不变\n // val() 赋值为 undefined 则赋值为空\n if (isUndefined(value)) {\n if (nameIndex !== 0) {\n return;\n }\n value = '';\n }\n if (nameIndex === 1 && isElement(value)) {\n value = value.outerHTML;\n }\n // @ts-ignore\n element[propName] = value;\n }\n $.fn[name] = function (value) {\n // 获取值\n if (!arguments.length) {\n return get(this);\n }\n // 设置值\n return this.each((i, element) => {\n const computedValue = isFunction(value)\n ? value.call(element, i, get($(element)))\n : value;\n // value 是数组,则选中数组中的元素,反选不在数组中的元素\n if (nameIndex === 0 && Array.isArray(computedValue)) {\n // select[multiple]\n if ($(element).is('select[multiple]')) {\n map($(element).find('option'), (option) => (option.selected =\n computedValue.indexOf(option.value) >\n -1));\n }\n // 其他 checkbox, radio 等元素\n else {\n element.checked =\n computedValue.indexOf(element.value) > -1;\n }\n }\n else {\n set(element, computedValue);\n }\n });\n };\n});\n","import $ from '../$';\nimport { isString } from '../utils';\nimport './children';\nimport './eq';\nimport './get';\nimport './parent';\n$.fn.index = function (selector) {\n if (!arguments.length) {\n return this.eq(0).parent().children().get().indexOf(this[0]);\n }\n if (isString(selector)) {\n return $(selector).get().indexOf(this[0]);\n }\n return this.get().indexOf($(selector)[0]);\n};\n","import $ from '../$';\nimport './eq';\n$.fn.last = function () {\n return this.eq(-1);\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport dir from './utils/dir';\neach(['', 'All', 'Until'], (nameIndex, name) => {\n $.fn[`next${name}`] = function (selector, filter) {\n return dir(this, nameIndex, 'nextElementSibling', selector, filter);\n };\n});\n","import $ from '../$';\nimport './filter';\nimport './map';\n$.fn.not = function (selector) {\n const $excludes = this.filter(selector);\n return this.map((_, element) => $excludes.index(element) > -1 ? undefined : element);\n};\n","import $ from '../$';\nimport './css';\nimport './map';\n/**\n * 返回最近的用于定位的父元素\n */\n$.fn.offsetParent = function () {\n return this.map(function () {\n let offsetParent = this.offsetParent;\n while (offsetParent && $(offsetParent).css('position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || document.documentElement;\n });\n};\n","import $ from '../$';\nimport './on';\n$.fn.one = function (types, selector, data, callback) {\n // @ts-ignore\n return this.on(types, selector, data, callback, true);\n};\n","import $ from '../$';\nimport each from '../functions/each';\nimport './get';\nimport dir from './utils/dir';\neach(['', 'All', 'Until'], (nameIndex, name) => {\n $.fn[`prev${name}`] = function (selector, filter) {\n // prevAll、prevUntil 需要把元素的顺序倒序处理,以便和 jQuery 的结果一致\n const $nodes = !nameIndex ? this : $(this.get().reverse());\n return dir($nodes, nameIndex, 'previousElementSibling', selector, filter);\n };\n});\n","import $ from '../$';\nimport each from '../functions/each';\nimport './each';\n$.fn.removeAttr = function (attributeName) {\n const names = attributeName.split(' ').filter((name) => name);\n return this.each(function () {\n each(names, (_, name) => {\n this.removeAttribute(name);\n });\n });\n};\n","import $ from '../$';\nimport removeData from '../functions/removeData';\nimport './each';\n$.fn.removeData = function (name) {\n return this.each(function () {\n removeData(this, name);\n });\n};\n","import $ from '../$';\nimport './each';\n$.fn.removeProp = function (name) {\n return this.each(function () {\n try {\n // @ts-ignore\n delete this[name];\n }\n catch (e) { }\n });\n};\n","import $ from '../$';\nimport './before';\nimport './clone';\nimport './each';\nimport './remove';\nimport { isFunction, isString } from '../utils';\n$.fn.replaceWith = function (newContent) {\n this.each((index, element) => {\n let content = newContent;\n if (isFunction(content)) {\n content = content.call(element, index, element.innerHTML);\n }\n else if (index && !isString(content)) {\n content = $(content).clone();\n }\n $(element).before(content);\n });\n return this.remove();\n};\n","import $ from '../$';\nimport './clone';\nimport './get';\nimport './map';\nimport './replaceWith';\n$.fn.replaceAll = function (target) {\n return $(target).map((index, element) => {\n $(element).replaceWith(index ? this.clone() : this);\n return this.get();\n });\n};\n","import $ from '../$';\nimport './each';\nimport './val';\n/**\n * 将表单元素的值组合成键值对数组\n * @returns {Array}\n */\n$.fn.serializeArray = function () {\n const result = [];\n this.each((_, element) => {\n const elements = element instanceof HTMLFormElement ? element.elements : [element];\n $(elements).each((_, element) => {\n const $element = $(element);\n const type = element.type;\n const nodeName = element.nodeName.toLowerCase();\n if (nodeName !== 'fieldset' &&\n element.name &&\n !element.disabled &&\n ['input', 'select', 'textarea', 'keygen'].indexOf(nodeName) > -1 &&\n ['submit', 'button', 'image', 'reset', 'file'].indexOf(type) === -1 &&\n (['radio', 'checkbox'].indexOf(type) === -1 ||\n element.checked)) {\n const value = $element.val();\n const valueArr = Array.isArray(value) ? value : [value];\n valueArr.forEach((value) => {\n result.push({\n name: element.name,\n value,\n });\n });\n }\n });\n });\n return result;\n};\n","import $ from '../$';\nimport param from '../functions/param';\nimport './serializeArray';\n$.fn.serialize = function () {\n return param(this.serializeArray());\n};\n","import $ from '../$';\nimport { getStyle } from '../utils';\nimport './each';\nconst elementDisplay = {};\n/**\n * 获取元素的初始 display 值,用于 .show() 方法\n * @param nodeName\n */\nfunction defaultDisplay(nodeName) {\n let element;\n let display;\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName);\n document.body.appendChild(element);\n display = getStyle(element, 'display');\n element.parentNode.removeChild(element);\n if (display === 'none') {\n display = 'block';\n }\n elementDisplay[nodeName] = display;\n }\n return elementDisplay[nodeName];\n}\n/**\n * 显示指定元素\n * @returns {JQ}\n */\n$.fn.show = function () {\n return this.each(function () {\n if (this.style.display === 'none') {\n this.style.display = '';\n }\n if (getStyle(this, 'display') === 'none') {\n this.style.display = defaultDisplay(this.nodeName);\n }\n });\n};\n","import $ from '../$';\nimport './add';\nimport './nextAll';\nimport './prevAll';\n/**\n * 取得同辈元素的集合\n * @param selector {String=}\n * @returns {JQ}\n */\n$.fn.siblings = function (selector) {\n return this.prevAll(selector).add(this.nextAll(selector));\n};\n","import $ from '../$';\nimport { getStyle } from '../utils';\nimport './each';\nimport './hide';\nimport './show';\n/**\n * 切换元素的显示状态\n */\n$.fn.toggle = function () {\n return this.each(function () {\n getStyle(this, 'display') === 'none' ? $(this).show() : $(this).hide();\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 强制重绘当前元素\n *\n * @example\n```js\n$('.box').reflow();\n```\n */\n reflow(): this;\n }\n}\n\n$.fn.reflow = function (this: JQ): JQ {\n return this.each(function () {\n return this.clientLeft;\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport { isNumber } from 'mdui.jq/es/utils';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 设置当前元素的 transition-duration 属性\n * @param duration 可以是带单位的值;若不带单位,则自动添加 `ms` 作为单位\n * @example\n```js\n$('.box').transition('300ms');\n$('.box').transition(300);\n```\n */\n transition(duration: string | number): this;\n }\n}\n\n$.fn.transition = function (this: JQ, duration: string | number): JQ {\n if (isNumber(duration)) {\n duration = `${duration}ms`;\n }\n\n return this.each(function () {\n this.style.webkitTransitionDuration = duration as string;\n this.style.transitionDuration = duration as string;\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport each from 'mdui.jq/es/functions/each';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/off';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 在当前元素上添加 transitionend 事件回调\n * @param callback 回调函数的参数为 `transitionend` 事件对象;`this` 指向当前元素\n * @example\n```js\n$('.box').transitionEnd(function() {\n alert('.box 元素的 transitionend 事件已触发');\n});\n```\n */\n transitionEnd(callback: (this: HTMLElement, e: Event) => void): this;\n }\n}\n\n$.fn.transitionEnd = function (\n this: JQ,\n callback: (this: HTMLElement, e: Event) => void,\n): JQ {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const events = ['webkitTransitionEnd', 'transitionend'];\n\n function fireCallback(this: Element | Document | Window, e: Event): void {\n if (e.target !== this) {\n return;\n }\n\n // @ts-ignore\n callback.call(this, e);\n\n each(events, (_, event) => {\n that.off(event, fireCallback);\n });\n }\n\n each(events, (_, event) => {\n that.on(event, fireCallback);\n });\n\n return this;\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 设置当前元素的 transform-origin 属性\n * @param transformOrigin\n * @example\n```js\n$('.box').transformOrigin('top center');\n```\n */\n transformOrigin(transformOrigin: string): this;\n }\n}\n\n$.fn.transformOrigin = function (this: JQ, transformOrigin: string): JQ {\n return this.each(function () {\n this.style.webkitTransformOrigin = transformOrigin;\n this.style.transformOrigin = transformOrigin;\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/each';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 设置当前元素的 transform 属性\n * @param transform\n * @example\n```js\n$('.box').transform('rotate(90deg)');\n```\n */\n transform(transform: string): this;\n }\n}\n\n$.fn.transform = function (this: JQ, transform: string): JQ {\n return this.each(function () {\n this.style.webkitTransform = transform;\n this.style.transform = transform;\n });\n};\n","import PlainObject from 'mdui.jq/es/interfaces/PlainObject';\nimport data from 'mdui.jq/es/functions/data';\n\ntype TYPE_API_INIT = (\n this: HTMLElement,\n i: number,\n element: HTMLElement,\n) => void;\n\n/**\n * CSS 选择器和初始化函数组成的对象\n */\nconst entries: PlainObject = {};\n\n/**\n * 注册并执行初始化函数\n * @param selector CSS 选择器\n * @param apiInit 初始化函数\n * @param i 元素索引\n * @param element 元素\n */\nfunction mutation(\n selector: string,\n apiInit: TYPE_API_INIT,\n i: number,\n element: HTMLElement,\n): void {\n let selectors = data(element, '_mdui_mutation');\n\n if (!selectors) {\n selectors = [];\n data(element, '_mdui_mutation', selectors);\n }\n\n if (selectors.indexOf(selector) === -1) {\n selectors.push(selector);\n apiInit.call(element, i, element);\n }\n}\n\nexport { TYPE_API_INIT, entries, mutation };\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport each from 'mdui.jq/es/functions/each';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/is';\nimport { entries, mutation } from '../../utils/mutation';\n\ndeclare module 'mdui.jq/es/JQ' {\n interface JQ {\n /**\n * 执行在当前元素及其子元素内注册的初始化函数\n */\n mutation(): this;\n }\n}\n\n$.fn.mutation = function (this: JQ): JQ {\n return this.each((i, element) => {\n const $this = $(element);\n\n each(entries, (selector: string, apiInit) => {\n if ($this.is(selector)) {\n mutation(selector, apiInit, i, element);\n }\n\n $this.find(selector).each((i, element) => {\n mutation(selector, apiInit, i, element);\n });\n });\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/addClass';\nimport '../methods/reflow';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 创建并显示遮罩,返回遮罩层的 JQ 对象\n * @param zIndex 遮罩层的 `z-index` 值,默认为 `2000`\n * @example\n```js\n$.showOverlay();\n```\n * @example\n```js\n$.showOverlay(3000);\n```\n */\n showOverlay(zIndex?: number): JQ;\n }\n}\n\n$.showOverlay = function (zIndex?: number): JQ {\n let $overlay = $('.mdui-overlay');\n\n if ($overlay.length) {\n $overlay.data('_overlay_is_deleted', false);\n\n if (!isUndefined(zIndex)) {\n $overlay.css('z-index', zIndex);\n }\n } else {\n if (isUndefined(zIndex)) {\n zIndex = 2000;\n }\n\n $overlay = $('
')\n .appendTo(document.body)\n .reflow()\n .css('z-index', zIndex);\n }\n\n let level = $overlay.data('_overlay_level') || 0;\n\n return $overlay.data('_overlay_level', ++level).addClass('mdui-overlay-show');\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/remove';\nimport '../methods/transitionEnd';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 隐藏遮罩层\n *\n * 如果调用了多次 $.showOverlay() 来显示遮罩层,则也需要调用相同次数的 $.hideOverlay() 才能隐藏遮罩层。可以通过传入参数 true 来强制隐藏遮罩层。\n * @param force 是否强制隐藏遮罩\n * @example\n```js\n$.hideOverlay();\n```\n * @example\n```js\n$.hideOverlay(true);\n```\n */\n hideOverlay(force?: boolean): void;\n }\n}\n\n$.hideOverlay = function (force = false): void {\n const $overlay = $('.mdui-overlay');\n\n if (!$overlay.length) {\n return;\n }\n\n let level = force ? 1 : $overlay.data('_overlay_level');\n\n if (level > 1) {\n $overlay.data('_overlay_level', --level);\n return;\n }\n\n $overlay\n .data('_overlay_level', 0)\n .removeClass('mdui-overlay-show')\n .data('_overlay_is_deleted', true)\n .transitionEnd(() => {\n if ($overlay.data('_overlay_is_deleted')) {\n $overlay.remove();\n }\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/width';\nimport { $body } from '../../utils/dom';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 锁定屏页面,禁止页面滚动\n * @example\n```js\n$.lockScreen();\n```\n */\n lockScreen(): void;\n }\n}\n\n$.lockScreen = function (): void {\n // 不直接把 body 设为 box-sizing: border-box,避免污染全局样式\n const newBodyWidth = $body.width();\n let level = $body.data('_lockscreen_level') || 0;\n\n $body\n .addClass('mdui-locked')\n .width(newBodyWidth)\n .data('_lockscreen_level', ++level);\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/width';\nimport { $body } from '../../utils/dom';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 解除页面锁定\n *\n * 如果调用了多次 $.lockScreen() 来显示遮罩层,则也需要调用相同次数的 $.unlockScreen() 才能隐藏遮罩层。可以通过传入参数 true 来强制隐藏遮罩层。\n * @param force 是否强制解除锁定\n * @example\n```js\n$.unlockScreen();\n```\n * @example\n```js\n$.unlockScreen(true);\n```\n */\n unlockScreen(force?: boolean): void;\n }\n}\n\n$.unlockScreen = function (force = false): void {\n let level = force ? 1 : $body.data('_lockscreen_level');\n\n if (level > 1) {\n $body.data('_lockscreen_level', --level);\n return;\n }\n\n $body.data('_lockscreen_level', 0).removeClass('mdui-locked').width('');\n};\n","import $ from 'mdui.jq/es/$';\nimport { isNull } from 'mdui.jq/es/utils';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 函数节流\n * @param fn 执行的函数\n * @param delay 最多多少毫秒执行一次\n * @example\n```js\n$.throttle(function () {\n console.log('这个函数最多 100ms 执行一次');\n}, 100)\n```\n */\n throttle(fn: () => void, delay: number): () => void;\n }\n}\n\n$.throttle = function (fn: () => void, delay = 16): () => void {\n let timer: any = null;\n\n return function (this: any, ...args: any): void {\n if (isNull(timer)) {\n timer = setTimeout(() => {\n fn.apply(this, args);\n timer = null;\n }, delay);\n }\n };\n};\n","import $ from 'mdui.jq/es/$';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport PlainObject from 'mdui.jq/es/interfaces/PlainObject';\n\ndeclare module 'mdui.jq/es/interfaces/JQStatic' {\n interface JQStatic {\n /**\n * 生成一个全局唯一的 ID\n * @param name 当该参数值对应的 guid 不存在时,会生成一个新的 guid,并返回;当该参数对应的 guid 已存在,则直接返回已有 guid\n * @example\n```js\n$.guid();\n```\n * @example\n```js\n$.guid('test');\n```\n */\n guid(name?: string): string;\n }\n}\n\nconst GUID: PlainObject = {};\n\n$.guid = function (name?: string): string {\n if (!isUndefined(name) && !isUndefined(GUID[name])) {\n return GUID[name];\n }\n\n function s4(): string {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n\n const guid =\n '_' +\n s4() +\n s4() +\n '-' +\n s4() +\n '-' +\n s4() +\n '-' +\n s4() +\n '-' +\n s4() +\n s4() +\n s4();\n\n if (!isUndefined(name)) {\n GUID[name] = guid;\n }\n\n return guid;\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport PlainObject from 'mdui.jq/es/interfaces/PlainObject';\nimport 'mdui.jq/es/methods/trigger';\n\n/**\n * 触发组件上的事件\n * @param eventName 事件名\n * @param componentName 组件名\n * @param target 在该元素上触发事件\n * @param instance 组件实例\n * @param parameters 事件参数\n */\nfunction componentEvent(\n eventName: string,\n componentName: string,\n target: HTMLElement | HTMLElement[] | JQ,\n instance?: any,\n parameters?: PlainObject,\n): void {\n if (!parameters) {\n parameters = {};\n }\n\n // @ts-ignore\n parameters.inst = instance;\n\n const fullEventName = `${eventName}.mdui.${componentName}`;\n\n // jQuery 事件\n // @ts-ignore\n if (typeof jQuery !== 'undefined') {\n // @ts-ignore\n jQuery(target).trigger(fullEventName, parameters);\n }\n\n const $target = $(target);\n\n // mdui.jq 事件\n $target.trigger(fullEventName, parameters);\n\n // 原生事件,供使用 addEventListener 监听\n type EventParams = {\n detail?: any;\n bubbles: boolean;\n cancelable: boolean;\n };\n\n const eventParams: EventParams = {\n bubbles: true,\n cancelable: true,\n detail: parameters,\n };\n\n const eventObject: CustomEvent = new CustomEvent(fullEventName, eventParams);\n\n // @ts-ignore\n eventObject._detail = parameters;\n\n $target[0].dispatchEvent(eventObject);\n}\n\nexport { componentEvent };\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/each';\nimport mdui from '../mdui';\nimport '../jq_extends/methods/mutation';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport { TYPE_API_INIT, entries, mutation } from '../utils/mutation';\n\ndeclare module '../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 传入了两个参数时,注册并执行初始化函数\n *\n * 没有传入参数时,执行初始化\n * @param selector CSS 选择器\n * @param apiInit 初始化函数\n * @example\n```js\nmdui.mutation();\n```\n * @example\n```js\nmdui.mutation();\n```\n */\n mutation(selector?: string, apiInit?: TYPE_API_INIT): void;\n }\n}\n\nmdui.mutation = function (selector?: string, apiInit?: TYPE_API_INIT): void {\n if (isUndefined(selector) || isUndefined(apiInit)) {\n $(document).mutation();\n return;\n }\n\n entries[selector] = apiInit!;\n $(selector).each((i, element) => mutation(selector, apiInit, i, element));\n};\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isNumber } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transitionEnd';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $window } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * Headroom 插件\n *\n * 请通过 `new mdui.Headroom()` 调用\n */\n Headroom: {\n /**\n * 实例化 Headroom 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Headroom;\n };\n }\n}\n\ntype TOLERANCE = {\n /**\n * 滚动条向下滚动多少距离开始隐藏或显示元素\n */\n down: number;\n\n /**\n * 滚动条向上滚动多少距离开始隐藏或显示元素\n */\n up: number;\n};\n\ntype OPTIONS = {\n /**\n * 滚动条滚动多少距离开始隐藏或显示元素\n */\n tolerance?: TOLERANCE | number;\n\n /**\n * 在页面顶部多少距离内滚动不会隐藏元素\n */\n offset?: number;\n\n /**\n * 初始化时添加的类\n */\n initialClass?: string;\n\n /**\n * 元素固定时添加的类\n */\n pinnedClass?: string;\n\n /**\n * 元素隐藏时添加的类\n */\n unpinnedClass?: string;\n};\n\ntype STATE = 'pinning' | 'pinned' | 'unpinning' | 'unpinned';\ntype EVENT = 'pin' | 'pinned' | 'unpin' | 'unpinned';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n tolerance: 5,\n offset: 0,\n initialClass: 'mdui-headroom',\n pinnedClass: 'mdui-headroom-pinned-top',\n unpinnedClass: 'mdui-headroom-unpinned-top',\n};\n\nclass Headroom {\n /**\n * headroom 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 headroom 的状态\n */\n private state: STATE = 'pinned';\n\n /**\n * 当前是否启用\n */\n private isEnable = false;\n\n /**\n * 上次滚动后,垂直方向的距离\n */\n private lastScrollY = 0;\n\n /**\n * AnimationFrame ID\n */\n private rafId = 0;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$element = $(selector).first();\n\n extend(this.options, options);\n\n // tolerance 参数若为数值,转换为对象\n const tolerance = this.options.tolerance;\n if (isNumber(tolerance)) {\n this.options.tolerance = {\n down: tolerance,\n up: tolerance,\n };\n }\n\n this.enable();\n }\n\n /**\n * 滚动时的处理\n */\n private onScroll(): void {\n this.rafId = window.requestAnimationFrame(() => {\n const currentScrollY = window.pageYOffset;\n const direction = currentScrollY > this.lastScrollY ? 'down' : 'up';\n const tolerance = (this.options.tolerance as TOLERANCE)[direction];\n const scrolled = Math.abs(currentScrollY - this.lastScrollY);\n const toleranceExceeded = scrolled >= tolerance;\n\n if (\n currentScrollY > this.lastScrollY &&\n currentScrollY >= this.options.offset! &&\n toleranceExceeded\n ) {\n this.unpin();\n } else if (\n (currentScrollY < this.lastScrollY && toleranceExceeded) ||\n currentScrollY <= this.options.offset!\n ) {\n this.pin();\n }\n\n this.lastScrollY = currentScrollY;\n });\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'headroom', this.$element, this);\n }\n\n /**\n * 动画结束的回调\n */\n private transitionEnd(): void {\n if (this.state === 'pinning') {\n this.state = 'pinned';\n this.triggerEvent('pinned');\n }\n\n if (this.state === 'unpinning') {\n this.state = 'unpinned';\n this.triggerEvent('unpinned');\n }\n }\n\n /**\n * 使元素固定住\n */\n public pin(): void {\n if (\n this.state === 'pinning' ||\n this.state === 'pinned' ||\n !this.$element.hasClass(this.options.initialClass!)\n ) {\n return;\n }\n\n this.triggerEvent('pin');\n this.state = 'pinning';\n this.$element\n .removeClass(this.options.unpinnedClass)\n .addClass(this.options.pinnedClass!)\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 使元素隐藏\n */\n public unpin(): void {\n if (\n this.state === 'unpinning' ||\n this.state === 'unpinned' ||\n !this.$element.hasClass(this.options.initialClass!)\n ) {\n return;\n }\n\n this.triggerEvent('unpin');\n this.state = 'unpinning';\n this.$element\n .removeClass(this.options.pinnedClass)\n .addClass(this.options.unpinnedClass!)\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 启用 headroom 插件\n */\n public enable(): void {\n if (this.isEnable) {\n return;\n }\n\n this.isEnable = true;\n this.state = 'pinned';\n this.$element\n .addClass(this.options.initialClass!)\n .removeClass(this.options.pinnedClass)\n .removeClass(this.options.unpinnedClass);\n this.lastScrollY = window.pageYOffset;\n\n $window.on('scroll', () => this.onScroll());\n }\n\n /**\n * 禁用 headroom 插件\n */\n public disable(): void {\n if (!this.isEnable) {\n return;\n }\n\n this.isEnable = false;\n this.$element\n .removeClass(this.options.initialClass)\n .removeClass(this.options.pinnedClass)\n .removeClass(this.options.unpinnedClass);\n\n $window.off('scroll', () => this.onScroll());\n window.cancelAnimationFrame(this.rafId);\n }\n\n /**\n * 获取当前状态。共包含四种状态:`pinning`、`pinned`、`unpinning`、`unpinned`\n */\n public getState(): STATE {\n return this.state;\n }\n}\n\nmdui.Headroom = Headroom;\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/attr';\nimport PlainObject from 'mdui.jq/es/interfaces/PlainObject';\n\n/**\n * 解析 DATA API 参数\n * @param element 元素\n * @param name 属性名\n */\nfunction parseOptions(element: HTMLElement, name: string): PlainObject {\n const attr = $(element).attr(name);\n\n if (!attr) {\n return {};\n }\n\n return new Function(\n '',\n `var json = ${attr}; return JSON.parse(JSON.stringify(json));`,\n )();\n}\n\nexport { parseOptions };\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-headroom';\n\n$(() => {\n mdui.mutation(`[${customAttr}]`, function () {\n new mdui.Headroom(this, parseOptions(this, customAttr));\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/eq';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isNumber } from 'mdui.jq/es/utils';\nimport '../../jq_extends/methods/reflow';\nimport '../../jq_extends/methods/transition';\nimport '../../jq_extends/methods/transitionEnd';\nimport { componentEvent } from '../../utils/componentEvent';\n\ntype OPTIONS = {\n /**\n * 是否启用手风琴效果\n * 为 `true` 时,最多只能有一个面板项处于打开状态,打开一个面板项时会关闭其他面板项\n * 为 `false` 时,可同时打开多个面板项\n */\n accordion?: boolean;\n};\n\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n accordion: false,\n};\n\nabstract class CollapseAbstract {\n /**\n * collapse 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * item 的 class 名\n */\n private classItem: string;\n\n /**\n * 打开状态的 item 的 class 名\n */\n private classItemOpen: string;\n\n /**\n * item-header 的 class 名\n */\n private classHeader: string;\n\n /**\n * item-body 的 class 名\n */\n private classBody: string;\n\n /**\n * 获取继承的组件名称\n */\n protected abstract getNamespace(): string;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n // CSS 类名\n const classPrefix = `mdui-${this.getNamespace()}-item`;\n this.classItem = classPrefix;\n this.classItemOpen = `${classPrefix}-open`;\n this.classHeader = `${classPrefix}-header`;\n this.classBody = `${classPrefix}-body`;\n\n this.$element = $(selector).first();\n\n extend(this.options, options);\n\n this.bindEvent();\n }\n\n /**\n * 绑定事件\n */\n private bindEvent(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const $items = this.getItems();\n\n // 点击 header 时,打开/关闭 item\n this.$element.on('click', `.${this.classHeader}`, function () {\n const $header = $(this as HTMLElement);\n const $item = $header.parent();\n\n $items.each((_, item) => {\n if ($item.is(item)) {\n that.toggle(item);\n }\n });\n });\n\n // 点击关闭按钮时,关闭 item\n this.$element.on(\n 'click',\n `[mdui-${this.getNamespace()}-item-close]`,\n function () {\n const $target = $(this as HTMLElement);\n const $item = $target.parents(`.${that.classItem}`).first();\n\n that.close($item);\n },\n );\n }\n\n /**\n * 指定 item 是否处于打开状态\n * @param $item\n */\n private isOpen($item: JQ): boolean {\n return $item.hasClass(this.classItemOpen);\n }\n\n /**\n * 获取所有 item\n */\n private getItems(): JQ {\n return this.$element.children(`.${this.classItem}`);\n }\n\n /**\n * 获取指定 item\n * @param item\n */\n private getItem(\n item: number | Selector | HTMLElement | ArrayLike,\n ): JQ {\n if (isNumber(item)) {\n return this.getItems().eq(item);\n }\n\n return $(item).first();\n }\n\n /**\n * 触发组件事件\n * @param name 事件名\n * @param $item 事件触发的目标 item\n */\n private triggerEvent(name: EVENT, $item: JQ): void {\n componentEvent(name, this.getNamespace(), $item, this);\n }\n\n /**\n * 动画结束回调\n * @param $content body 元素\n * @param $item item 元素\n */\n private transitionEnd($content: JQ, $item: JQ): void {\n if (this.isOpen($item)) {\n $content.transition(0).height('auto').reflow().transition('');\n\n this.triggerEvent('opened', $item);\n } else {\n $content.height('');\n\n this.triggerEvent('closed', $item);\n }\n }\n\n /**\n * 打开指定面板项\n * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象\n */\n public open(\n item: number | Selector | HTMLElement | ArrayLike,\n ): void {\n const $item = this.getItem(item);\n\n if (this.isOpen($item)) {\n return;\n }\n\n // 关闭其他项\n if (this.options.accordion) {\n this.$element.children(`.${this.classItemOpen}`).each((_, element) => {\n const $element = $(element);\n\n if (!$element.is($item)) {\n this.close($element);\n }\n });\n }\n\n const $content = $item.children(`.${this.classBody}`);\n\n $content\n .height($content[0].scrollHeight)\n .transitionEnd(() => this.transitionEnd($content, $item));\n\n this.triggerEvent('open', $item);\n\n $item.addClass(this.classItemOpen);\n }\n\n /**\n * 关闭指定面板项\n * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象\n */\n public close(\n item: number | Selector | HTMLElement | ArrayLike,\n ): void {\n const $item = this.getItem(item);\n\n if (!this.isOpen($item)) {\n return;\n }\n\n const $content = $item.children(`.${this.classBody}`);\n\n this.triggerEvent('close', $item);\n\n $item.removeClass(this.classItemOpen);\n\n $content\n .transition(0)\n .height($content[0].scrollHeight)\n .reflow()\n .transition('')\n .height('')\n .transitionEnd(() => this.transitionEnd($content, $item));\n }\n\n /**\n * 切换指定面板项的打开状态\n * @param item 面板项的索引号、或 CSS 选择器、或 DOM 元素、或 JQ 对象\n */\n public toggle(\n item: number | Selector | HTMLElement | ArrayLike,\n ): void {\n const $item = this.getItem(item);\n\n this.isOpen($item) ? this.close($item) : this.open($item);\n }\n\n /**\n * 打开所有面板项\n */\n public openAll(): void {\n this.getItems().each((_, element) => this.open(element));\n }\n\n /**\n * 关闭所有面板项\n */\n public closeAll(): void {\n this.getItems().each((_, element) => this.close(element));\n }\n}\n\nexport { OPTIONS, CollapseAbstract };\n","import Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport { CollapseAbstract, OPTIONS } from './collapseAbstract';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 折叠内容块组件\n *\n * 请通过 `new mdui.Collapse()` 调用\n */\n Collapse: {\n /**\n * 实例化 Collapse 组件\n * @param selector CSS 选择器或 DOM 元素\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Collapse;\n };\n }\n}\n\nclass Collapse extends CollapseAbstract {\n protected getNamespace(): string {\n return 'collapse';\n }\n}\n\nmdui.Collapse = Collapse;\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-collapse';\n\n$(() => {\n mdui.mutation(`[${customAttr}]`, function () {\n new mdui.Collapse(this, parseOptions(this, customAttr));\n });\n});\n","import Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport { CollapseAbstract, OPTIONS } from '../collapse/collapseAbstract';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 可扩展面板组件\n *\n * 请通过 `new mdui.Panel()` 调用\n */\n Panel: {\n /**\n * 实例化 Panel 组件\n * @param selector CSS 选择器或 DOM 元素\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Panel;\n };\n }\n}\n\nclass Panel extends CollapseAbstract {\n protected getNamespace(): string {\n return 'panel';\n }\n}\n\nmdui.Panel = Panel;\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-panel';\n\n$(() => {\n mdui.mutation(`[${customAttr}]`, function () {\n new mdui.Panel(this, parseOptions(this, customAttr));\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/add';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/eq';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/prependTo';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 动态修改了表格后,需要调用该方法重新初始化表格。\n *\n * 若传入了参数,则只初始化该参数对应的表格。若没有传入参数,则重新初始化所有表格。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateTables(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\nclass Table {\n /**\n * table 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 表头 tr 元素\n */\n private $thRow: JQ = $();\n\n /**\n * 表格 body 中的 tr 元素\n */\n private $tdRows: JQ = $();\n\n /**\n * 表头的 checkbox 元素\n */\n private $thCheckbox: JQ = $();\n\n /**\n * 表格 body 中的 checkbox 元素\n */\n private $tdCheckboxs: JQ = $();\n\n /**\n * 表格行是否可选择\n */\n private selectable = false;\n\n /**\n * 已选中的行数\n */\n private selectedRow = 0;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n ) {\n this.$element = $(selector).first();\n this.init();\n }\n\n /**\n * 初始化表格\n */\n public init(): void {\n this.$thRow = this.$element.find('thead tr');\n this.$tdRows = this.$element.find('tbody tr');\n this.selectable = this.$element.hasClass('mdui-table-selectable');\n\n this.updateThCheckbox();\n this.updateTdCheckbox();\n this.updateNumericCol();\n }\n\n /**\n * 生成 checkbox 的 HTML 结构\n * @param tag 标签名\n */\n private createCheckboxHTML(tag: string): string {\n return (\n `<${tag} class=\"mdui-table-cell-checkbox\">` +\n '' +\n ``\n );\n }\n\n /**\n * 更新表头 checkbox 的状态\n */\n private updateThCheckboxStatus(): void {\n const checkbox = this.$thCheckbox[0];\n const selectedRow = this.selectedRow;\n const tdRowsLength = this.$tdRows.length;\n\n checkbox.checked = selectedRow === tdRowsLength;\n checkbox.indeterminate = !!selectedRow && selectedRow !== tdRowsLength;\n }\n\n /**\n * 更新表格行的 checkbox\n */\n private updateTdCheckbox(): void {\n const rowSelectedClass = 'mdui-table-row-selected';\n\n this.$tdRows.each((_, row) => {\n const $row = $(row);\n\n // 移除旧的 checkbox\n $row.find('.mdui-table-cell-checkbox').remove();\n\n if (!this.selectable) {\n return;\n }\n\n // 创建 DOM\n const $checkbox = $(this.createCheckboxHTML('td'))\n .prependTo($row)\n .find('input[type=\"checkbox\"]') as JQ;\n\n // 默认选中的行\n if ($row.hasClass(rowSelectedClass)) {\n $checkbox[0].checked = true;\n this.selectedRow++;\n }\n\n this.updateThCheckboxStatus();\n\n // 绑定事件\n $checkbox.on('change', () => {\n if ($checkbox[0].checked) {\n $row.addClass(rowSelectedClass);\n this.selectedRow++;\n } else {\n $row.removeClass(rowSelectedClass);\n this.selectedRow--;\n }\n\n this.updateThCheckboxStatus();\n });\n\n this.$tdCheckboxs = this.$tdCheckboxs.add($checkbox);\n });\n }\n\n /**\n * 更新表头的 checkbox\n */\n private updateThCheckbox(): void {\n // 移除旧的 checkbox\n this.$thRow.find('.mdui-table-cell-checkbox').remove();\n\n if (!this.selectable) {\n return;\n }\n\n this.$thCheckbox = $(this.createCheckboxHTML('th'))\n .prependTo(this.$thRow)\n .find('input[type=\"checkbox\"]')\n .on('change', () => {\n const isCheckedAll = this.$thCheckbox[0].checked;\n this.selectedRow = isCheckedAll ? this.$tdRows.length : 0;\n\n this.$tdCheckboxs.each((_, checkbox) => {\n checkbox.checked = isCheckedAll;\n });\n\n this.$tdRows.each((_, row) => {\n isCheckedAll\n ? $(row).addClass('mdui-table-row-selected')\n : $(row).removeClass('mdui-table-row-selected');\n });\n }) as JQ;\n }\n\n /**\n * 更新数值列\n */\n private updateNumericCol(): void {\n const numericClass = 'mdui-table-col-numeric';\n\n this.$thRow.find('th').each((i, th) => {\n const isNumericCol = $(th).hasClass(numericClass);\n\n this.$tdRows.each((_, row) => {\n const $td = $(row).find('td').eq(i);\n\n isNumericCol\n ? $td.addClass(numericClass)\n : $td.removeClass(numericClass);\n });\n });\n }\n}\n\nconst dataName = '_mdui_table';\n\n$(() => {\n mdui.mutation('.mdui-table', function () {\n const $element = $(this);\n\n if (!$element.data(dataName)) {\n $element.data(dataName, new Table($element));\n }\n });\n});\n\nmdui.updateTables = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-table') : $(selector);\n\n $elements.each((_, element) => {\n const $element = $(element);\n const instance = $element.data(dataName);\n\n if (instance) {\n instance.init();\n } else {\n $element.data(dataName, new Table($element));\n }\n });\n};\n","/**\n * touch 事件后的 500ms 内禁用 mousedown 事件\n *\n * 不支持触控的屏幕上事件顺序为 mousedown -> mouseup -> click\n * 支持触控的屏幕上事件顺序为 touchstart -> touchend -> mousedown -> mouseup -> click\n *\n * 在每一个事件中都使用 TouchHandler.isAllow(event) 判断事件是否可执行\n * 在 touchstart 和 touchmove、touchend、touchcancel\n *\n * (function () {\n * $document\n * .on(start, function (e) {\n * if (!isAllow(e)) {\n * return;\n * }\n * register(e);\n * console.log(e.type);\n * })\n * .on(move, function (e) {\n * if (!isAllow(e)) {\n * return;\n * }\n * console.log(e.type);\n * })\n * .on(end, function (e) {\n * if (!isAllow(e)) {\n * return;\n * }\n * console.log(e.type);\n * })\n * .on(unlock, register);\n * })();\n */\n\nconst startEvent = 'touchstart mousedown';\nconst moveEvent = 'touchmove mousemove';\nconst endEvent = 'touchend mouseup';\nconst cancelEvent = 'touchcancel mouseleave';\nconst unlockEvent = 'touchend touchmove touchcancel';\n\nlet touches = 0;\n\n/**\n * 该事件是否被允许,在执行事件前调用该方法判断事件是否可以执行\n * 若已触发 touch 事件,则阻止之后的鼠标事件\n * @param event\n */\nfunction isAllow(event: Event): boolean {\n return !(\n touches &&\n [\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'click',\n 'mouseover',\n 'mouseout',\n 'mouseenter',\n 'mouseleave',\n ].indexOf(event.type) > -1\n );\n}\n\n/**\n * 在 touchstart 和 touchmove、touchend、touchcancel 事件中调用该方法注册事件\n * @param event\n */\nfunction register(event: Event): void {\n if (event.type === 'touchstart') {\n // 触发了 touch 事件\n touches += 1;\n } else if (\n ['touchmove', 'touchend', 'touchcancel'].indexOf(event.type) > -1\n ) {\n // touch 事件结束 500ms 后解除对鼠标事件的阻止\n setTimeout(function () {\n if (touches) {\n touches -= 1;\n }\n }, 500);\n }\n}\n\nexport {\n startEvent,\n moveEvent,\n endEvent,\n cancelEvent,\n unlockEvent,\n isAllow,\n register,\n};\n","/**\n * Inspired by https://github.com/nolimits4web/Framework7/blob/master/src/js/fast-clicks.js\n * https://github.com/nolimits4web/Framework7/blob/master/LICENSE\n *\n * Inspired by https://github.com/fians/Waves\n */\n\nimport $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/innerHeight';\nimport 'mdui.jq/es/methods/innerWidth';\nimport 'mdui.jq/es/methods/off';\nimport 'mdui.jq/es/methods/offset';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/prependTo';\nimport 'mdui.jq/es/methods/prop';\nimport 'mdui.jq/es/methods/remove';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport '../../jq_extends/methods/reflow';\nimport '../../jq_extends/methods/transform';\nimport '../../jq_extends/methods/transitionEnd';\nimport { $document } from '../../utils/dom';\nimport {\n cancelEvent,\n endEvent,\n isAllow,\n moveEvent,\n register,\n startEvent,\n unlockEvent,\n} from '../../utils/touchHandler';\n\n/**\n * 显示涟漪动画\n * @param event\n * @param $ripple\n */\nfunction show(event: Event, $ripple: JQ): void {\n // 鼠标右键不产生涟漪\n if (event instanceof MouseEvent && event.button === 2) {\n return;\n }\n\n // 点击位置坐标\n const touchPosition =\n typeof TouchEvent !== 'undefined' &&\n event instanceof TouchEvent &&\n event.touches.length\n ? event.touches[0]\n : (event as MouseEvent);\n\n const touchStartX = touchPosition.pageX;\n const touchStartY = touchPosition.pageY;\n\n // 涟漪位置\n const offset = $ripple.offset();\n const height = $ripple.innerHeight();\n const width = $ripple.innerWidth();\n const center = {\n x: touchStartX - offset.left,\n y: touchStartY - offset.top,\n };\n const diameter = Math.max(\n Math.pow(Math.pow(height, 2) + Math.pow(width, 2), 0.5),\n 48,\n );\n\n // 涟漪扩散动画\n const translate =\n `translate3d(${-center.x + width / 2}px,` +\n `${-center.y + height / 2}px, 0) scale(1)`;\n\n // 涟漪的 DOM 结构,并缓存动画效果\n $(\n `
`,\n )\n .data('_ripple_wave_translate', translate)\n .prependTo($ripple)\n .reflow()\n .transform(translate);\n}\n\n/**\n * 隐藏并移除涟漪\n * @param $wave\n */\nfunction removeRipple($wave: JQ): void {\n if (!$wave.length || $wave.data('_ripple_wave_removed')) {\n return;\n }\n\n $wave.data('_ripple_wave_removed', true);\n\n let removeTimer = setTimeout(() => $wave.remove(), 400);\n const translate = $wave.data('_ripple_wave_translate');\n\n $wave\n .addClass('mdui-ripple-wave-fill')\n .transform(translate.replace('scale(1)', 'scale(1.01)'))\n .transitionEnd(() => {\n clearTimeout(removeTimer);\n\n $wave\n .addClass('mdui-ripple-wave-out')\n .transform(translate.replace('scale(1)', 'scale(1.01)'));\n\n removeTimer = setTimeout(() => $wave.remove(), 700);\n\n setTimeout(() => {\n $wave.transitionEnd(() => {\n clearTimeout(removeTimer);\n $wave.remove();\n });\n }, 0);\n });\n}\n\n/**\n * 隐藏涟漪动画\n * @param this\n */\nfunction hide(this: any): void {\n const $ripple = $(this as HTMLElement);\n\n $ripple.children('.mdui-ripple-wave').each((_, wave) => {\n removeRipple($(wave));\n });\n\n $ripple.off(`${moveEvent} ${endEvent} ${cancelEvent}`, hide);\n}\n\n/**\n * 显示涟漪,并绑定 touchend 等事件\n * @param event\n */\nfunction showRipple(event: Event): void {\n if (!isAllow(event)) {\n return;\n }\n\n register(event);\n\n // Chrome 59 点击滚动条时,会在 document 上触发事件\n if (event.target === document) {\n return;\n }\n\n const $target = $(event.target as HTMLElement);\n\n // 获取含 .mdui-ripple 类的元素\n const $ripple = $target.hasClass('mdui-ripple')\n ? $target\n : $target.parents('.mdui-ripple').first();\n\n if (!$ripple.length) {\n return;\n }\n\n // 禁用状态的元素上不产生涟漪效果\n if ($ripple.prop('disabled') || !isUndefined($ripple.attr('disabled'))) {\n return;\n }\n\n if (event.type === 'touchstart') {\n let hidden = false;\n\n // touchstart 触发指定时间后开始涟漪动画,避免手指滑动时也触发涟漪\n let timer = setTimeout(() => {\n timer = 0;\n show(event, $ripple);\n }, 200);\n\n const hideRipple = (): void => {\n // 如果手指没有移动,且涟漪动画还没有开始,则开始涟漪动画\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n show(event, $ripple);\n }\n\n if (!hidden) {\n hidden = true;\n hide.call($ripple);\n }\n };\n\n // 手指移动后,移除涟漪动画\n const touchMove = (): void => {\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n\n hideRipple();\n };\n\n $ripple.on('touchmove', touchMove).on('touchend touchcancel', hideRipple);\n } else {\n show(event, $ripple);\n $ripple.on(`${moveEvent} ${endEvent} ${cancelEvent}`, hide);\n }\n}\n\n$(() => {\n $document.on(startEvent, showRipple).on(unlockEvent, register);\n});\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/outerHeight';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/text';\nimport 'mdui.jq/es/methods/trigger';\nimport 'mdui.jq/es/methods/val';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { $document } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 动态修改了文本框后,需要调用该方法重新初始化文本框。\n *\n * 若传入了参数,则只初始化该参数对应的文本框。若没有传入参数,则重新初始化所有文本框。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateTextFields(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\ntype INPUT_EVENT_DATA = {\n reInit?: boolean;\n domLoadedEvent?: boolean;\n};\n\nconst defaultData: INPUT_EVENT_DATA = {\n reInit: false,\n domLoadedEvent: false,\n};\n\n/**\n * 输入框事件\n * @param event\n * @param data\n */\nfunction inputEvent(event: Event, data: INPUT_EVENT_DATA = {}): void {\n data = extend({}, defaultData, data);\n\n const input = event.target as HTMLInputElement;\n const $input = $(input);\n const eventType = event.type;\n const value = $input.val() as string;\n\n // 文本框类型\n const inputType = $input.attr('type') || '';\n if (\n ['checkbox', 'button', 'submit', 'range', 'radio', 'image'].indexOf(\n inputType,\n ) > -1\n ) {\n return;\n }\n\n const $textfield = $input.parent('.mdui-textfield');\n\n // 输入框是否聚焦\n if (eventType === 'focus') {\n $textfield.addClass('mdui-textfield-focus');\n }\n\n if (eventType === 'blur') {\n $textfield.removeClass('mdui-textfield-focus');\n }\n\n // 输入框是否为空\n if (eventType === 'blur' || eventType === 'input') {\n value\n ? $textfield.addClass('mdui-textfield-not-empty')\n : $textfield.removeClass('mdui-textfield-not-empty');\n }\n\n // 输入框是否禁用\n input.disabled\n ? $textfield.addClass('mdui-textfield-disabled')\n : $textfield.removeClass('mdui-textfield-disabled');\n\n // 表单验证\n if (\n (eventType === 'input' || eventType === 'blur') &&\n !data.domLoadedEvent &&\n input.validity\n ) {\n input.validity.valid\n ? $textfield.removeClass('mdui-textfield-invalid-html5')\n : $textfield.addClass('mdui-textfield-invalid-html5');\n }\n\n // textarea 高度自动调整\n if ($input.is('textarea')) {\n // IE bug:textarea 的值仅为多个换行,不含其他内容时,textarea 的高度不准确\n // 此时,在计算高度前,在值的开头加入一个空格,计算完后,移除空格\n const inputValue = value;\n let hasExtraSpace = false;\n\n if (inputValue.replace(/[\\r\\n]/g, '') === '') {\n $input.val(' ' + inputValue);\n hasExtraSpace = true;\n }\n\n // 设置 textarea 高度\n $input.outerHeight('');\n const height = $input.outerHeight();\n const scrollHeight = input.scrollHeight;\n\n if (scrollHeight > height) {\n $input.outerHeight(scrollHeight);\n }\n\n // 计算完,还原 textarea 的值\n if (hasExtraSpace) {\n $input.val(inputValue);\n }\n }\n\n // 实时字数统计\n if (data.reInit) {\n $textfield.find('.mdui-textfield-counter').remove();\n }\n\n const maxLength = $input.attr('maxlength');\n if (maxLength) {\n if (data.reInit || data.domLoadedEvent) {\n $(\n '
' +\n ` / ${maxLength}` +\n '
',\n ).appendTo($textfield);\n }\n\n $textfield\n .find('.mdui-textfield-counter-inputed')\n .text(value.length.toString());\n }\n\n // 含 帮助文本、错误提示、字数统计 时,增加文本框底部内边距\n if (\n $textfield.find('.mdui-textfield-helper').length ||\n $textfield.find('.mdui-textfield-error').length ||\n maxLength\n ) {\n $textfield.addClass('mdui-textfield-has-bottom');\n }\n}\n\n$(() => {\n // 绑定事件\n $document.on(\n 'input focus blur',\n '.mdui-textfield-input',\n { useCapture: true },\n inputEvent,\n );\n\n // 可展开文本框展开\n $document.on(\n 'click',\n '.mdui-textfield-expandable .mdui-textfield-icon',\n function () {\n $(this as HTMLElement)\n .parents('.mdui-textfield')\n .addClass('mdui-textfield-expanded')\n .find('.mdui-textfield-input')[0]\n .focus();\n },\n );\n\n // 可展开文本框关闭\n $document.on(\n 'click',\n '.mdui-textfield-expanded .mdui-textfield-close',\n function () {\n $(this)\n .parents('.mdui-textfield')\n .removeClass('mdui-textfield-expanded')\n .find('.mdui-textfield-input')\n .val('');\n },\n );\n\n /**\n * 初始化文本框\n */\n mdui.mutation('.mdui-textfield', function () {\n $(this).find('.mdui-textfield-input').trigger('input', {\n domLoadedEvent: true,\n });\n });\n});\n\nmdui.updateTextFields = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-textfield') : $(selector);\n\n $elements.each((_, element) => {\n $(element).find('.mdui-textfield-input').trigger('input', {\n reInit: true,\n });\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/append';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/empty';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/text';\nimport 'mdui.jq/es/methods/val';\nimport 'mdui.jq/es/methods/width';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport {\n endEvent,\n isAllow,\n register,\n startEvent,\n unlockEvent,\n} from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 动态修改了滑块后,需要调用该方法重新初始化滑块\n *\n * 若传入了参数,则只初始化该参数对应的滑块。若没有传入参数,则重新初始化所有滑块。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateSliders(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\n/**\n * 滑块的值改变后修改滑块样式\n * @param $slider\n */\nfunction updateValueStyle($slider: JQ): void {\n const data = $slider.data();\n\n const $track = data._slider_$track;\n const $fill = data._slider_$fill;\n const $thumb = data._slider_$thumb;\n const $input = data._slider_$input;\n const min = data._slider_min;\n const max = data._slider_max;\n const isDisabled = data._slider_disabled;\n const isDiscrete = data._slider_discrete;\n const $thumbText = data._slider_$thumbText;\n const value = $input.val();\n const percent = ((value - min) / (max - min)) * 100;\n\n $fill.width(`${percent}%`);\n $track.width(`${100 - percent}%`);\n\n if (isDisabled) {\n $fill.css('padding-right', '6px');\n $track.css('padding-left', '6px');\n }\n\n $thumb.css('left', `${percent}%`);\n\n if (isDiscrete) {\n $thumbText.text(value);\n }\n\n percent === 0\n ? $slider.addClass('mdui-slider-zero')\n : $slider.removeClass('mdui-slider-zero');\n}\n\n/**\n * 重新初始化滑块\n * @param $slider\n */\nfunction reInit($slider: JQ): void {\n const $track = $('
');\n const $fill = $('
');\n const $thumb = $('
');\n const $input = $slider.find('input[type=\"range\"]') as JQ;\n const isDisabled = $input[0].disabled;\n const isDiscrete = $slider.hasClass('mdui-slider-discrete');\n\n // 禁用状态\n isDisabled\n ? $slider.addClass('mdui-slider-disabled')\n : $slider.removeClass('mdui-slider-disabled');\n\n // 重新填充 HTML\n $slider.find('.mdui-slider-track').remove();\n $slider.find('.mdui-slider-fill').remove();\n $slider.find('.mdui-slider-thumb').remove();\n $slider.append($track).append($fill).append($thumb);\n\n // 间续型滑块\n let $thumbText = $();\n if (isDiscrete) {\n $thumbText = $('');\n $thumb.empty().append($thumbText);\n }\n\n $slider.data('_slider_$track', $track);\n $slider.data('_slider_$fill', $fill);\n $slider.data('_slider_$thumb', $thumb);\n $slider.data('_slider_$input', $input);\n $slider.data('_slider_min', $input.attr('min'));\n $slider.data('_slider_max', $input.attr('max'));\n $slider.data('_slider_disabled', isDisabled);\n $slider.data('_slider_discrete', isDiscrete);\n $slider.data('_slider_$thumbText', $thumbText);\n\n // 设置默认值\n updateValueStyle($slider);\n}\n\nconst rangeSelector = '.mdui-slider input[type=\"range\"]';\n\n$(() => {\n // 滑块滑动事件\n $document.on('input change', rangeSelector, function () {\n const $slider = $(this).parent() as JQ;\n\n updateValueStyle($slider);\n });\n\n // 开始触摸滑块事件\n $document.on(startEvent, rangeSelector, function (event: Event) {\n if (!isAllow(event)) {\n return;\n }\n\n register(event);\n\n if ((this as HTMLInputElement).disabled) {\n return;\n }\n\n const $slider = $(this).parent() as JQ;\n\n $slider.addClass('mdui-slider-focus');\n });\n\n // 结束触摸滑块事件\n $document.on(endEvent, rangeSelector, function (event: Event) {\n if (!isAllow(event)) {\n return;\n }\n\n if ((this as HTMLInputElement).disabled) {\n return;\n }\n\n const $slider = $(this).parent() as JQ;\n\n $slider.removeClass('mdui-slider-focus');\n });\n\n $document.on(unlockEvent, rangeSelector, register);\n\n /**\n * 初始化滑块\n */\n mdui.mutation('.mdui-slider', function () {\n reInit($(this));\n });\n});\n\nmdui.updateSliders = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-slider') : $(selector);\n\n $elements.each((_, element) => {\n reInit($(element));\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/last';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/removeClass';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transitionEnd';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document } from '../../utils/dom';\nimport { startEvent } from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 浮动操作按钮组件\n *\n * 请通过 `new mdui.Fab()` 调用\n */\n Fab: {\n /**\n * 实例化 Fab 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Fab;\n };\n }\n}\n\ntype OPTIONS = {\n /**\n * 触发方式。`hover`: 鼠标悬浮触发;`click`: 点击触发\n *\n * 默认为 `hover`\n */\n trigger?: 'click' | 'hover';\n};\n\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n trigger: 'hover',\n};\n\nclass Fab {\n /**\n * Fab 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 fab 的状态\n */\n private state: STATE = 'closed';\n\n /**\n * 按钮元素\n */\n private $btn: JQ;\n\n /**\n * 拨号菜单元素\n */\n private $dial: JQ;\n\n /**\n * 拨号菜单内的按钮\n */\n private $dialBtns: JQ;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$element = $(selector).first();\n\n extend(this.options, options);\n\n this.$btn = this.$element.find('.mdui-fab');\n this.$dial = this.$element.find('.mdui-fab-dial');\n this.$dialBtns = this.$dial.find('.mdui-fab');\n\n if (this.options.trigger === 'hover') {\n this.$btn.on('touchstart mouseenter', () => this.open());\n this.$element.on('mouseleave', () => this.close());\n }\n\n if (this.options.trigger === 'click') {\n this.$btn.on(startEvent, () => this.open());\n }\n\n // 触摸屏幕其他地方关闭快速拨号\n $document.on(startEvent, (event) => {\n if ($(event.target as HTMLElement).parents('.mdui-fab-wrapper').length) {\n return;\n }\n\n this.close();\n });\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'fab', this.$element, this);\n }\n\n /**\n * 当前是否为打开状态\n */\n private isOpen(): boolean {\n return this.state === 'opening' || this.state === 'opened';\n }\n\n /**\n * 打开快速拨号菜单\n */\n public open(): void {\n if (this.isOpen()) {\n return;\n }\n\n // 为菜单中的按钮添加不同的 transition-delay\n this.$dialBtns.each((index, btn) => {\n const delay = `${15 * (this.$dialBtns.length - index)}ms`;\n\n btn.style.transitionDelay = delay;\n btn.style.webkitTransitionDelay = delay;\n });\n\n this.$dial.css('height', 'auto').addClass('mdui-fab-dial-show');\n\n // 如果按钮中存在 .mdui-fab-opened 的图标,则进行图标切换\n if (this.$btn.find('.mdui-fab-opened').length) {\n this.$btn.addClass('mdui-fab-opened');\n }\n\n this.state = 'opening';\n this.triggerEvent('open');\n\n // 打开顺序为从下到上逐个打开,最上面的打开后才表示动画完成\n this.$dialBtns.first().transitionEnd(() => {\n if (this.$btn.hasClass('mdui-fab-opened')) {\n this.state = 'opened';\n this.triggerEvent('opened');\n }\n });\n }\n\n /**\n * 关闭快速拨号菜单\n */\n public close(): void {\n if (!this.isOpen()) {\n return;\n }\n\n // 为菜单中的按钮添加不同的 transition-delay\n this.$dialBtns.each((index, btn) => {\n const delay = `${15 * index}ms`;\n\n btn.style.transitionDelay = delay;\n btn.style.webkitTransitionDelay = delay;\n });\n\n this.$dial.removeClass('mdui-fab-dial-show');\n this.$btn.removeClass('mdui-fab-opened');\n this.state = 'closing';\n this.triggerEvent('close');\n\n // 从上往下依次关闭,最后一个关闭后才表示动画完成\n this.$dialBtns.last().transitionEnd(() => {\n if (this.$btn.hasClass('mdui-fab-opened')) {\n return;\n }\n\n this.state = 'closed';\n this.triggerEvent('closed');\n this.$dial.css('height', 0);\n });\n }\n\n /**\n * 切换快速拨号菜单的打开状态\n */\n public toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /**\n * 以动画的形式显示整个浮动操作按钮\n */\n public show(): void {\n this.$element.removeClass('mdui-fab-hide');\n }\n\n /**\n * 以动画的形式隐藏整个浮动操作按钮\n */\n public hide(): void {\n this.$element.addClass('mdui-fab-hide');\n }\n\n /**\n * 返回当前快速拨号菜单的打开状态。共包含四种状态:`opening`、`opened`、`closing`、`closed`\n */\n public getState(): STATE {\n return this.state;\n }\n}\n\nmdui.Fab = Fab;\n","import $ from 'mdui.jq/es/$';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-fab';\n\n$(() => {\n // mouseenter 不冒泡,无法进行事件委托,这里用 mouseover 代替。\n // 不管是 click 、 mouseover 还是 touchstart ,都先初始化。\n\n $document.on(\n 'touchstart mousedown mouseover',\n `[${customAttr}]`,\n function () {\n new mdui.Fab(\n this as HTMLElement,\n parseOptions(this as HTMLElement, customAttr),\n );\n },\n );\n});\n","/**\n * 最终生成的元素结构为:\n * \n *
// $element\n * State 1 // $selected\n *
// $menu\n *
State 1
// $items\n *
State 2
\n *
State 3
\n *
\n *
\n */\n\nimport $ from 'mdui.jq/es/$';\nimport contains from 'mdui.jq/es/functions/contains';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/add';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/after';\nimport 'mdui.jq/es/methods/append';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/hide';\nimport 'mdui.jq/es/methods/index';\nimport 'mdui.jq/es/methods/innerWidth';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/remove';\nimport 'mdui.jq/es/methods/removeAttr';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/show';\nimport 'mdui.jq/es/methods/text';\nimport 'mdui.jq/es/methods/trigger';\nimport 'mdui.jq/es/methods/val';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transitionEnd';\nimport '../../jq_extends/static/guid';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document, $window } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 下拉选择组件\n *\n * 请通过 `new mdui.Select()` 调用\n */\n Select: {\n /**\n * 实例化 Select 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Select;\n };\n }\n}\n\ntype OPTIONS = {\n /**\n * 下拉框位置:`auto`、`top`、`bottom`\n */\n position?: 'auto' | 'top' | 'bottom';\n\n /**\n * 菜单与窗口上下边框至少保持多少间距\n */\n gutter?: number;\n};\n\ntype STATE = 'closing' | 'closed' | 'opening' | 'opened';\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n position: 'auto',\n gutter: 16,\n};\n\nclass Select {\n /**\n * 原生 ``\n : '') +\n (options.type === 'textarea'\n ? ``\n : '') +\n '
';\n\n const onCancelClick = (dialog: Dialog): void => {\n const value = dialog.$element.find('.mdui-textfield-input').val();\n onCancel(value, dialog);\n };\n\n const onConfirmClick = (dialog: Dialog): void => {\n const value = dialog.$element.find('.mdui-textfield-input').val();\n onConfirm(value, dialog);\n };\n\n return mdui.dialog({\n title,\n content,\n buttons: [\n {\n text: options.cancelText,\n bold: false,\n close: options.closeOnCancel,\n onClick: onCancelClick,\n },\n {\n text: options.confirmText,\n bold: false,\n close: options.closeOnConfirm,\n onClick: onConfirmClick,\n },\n ],\n cssClass: 'mdui-dialog-prompt',\n history: options.history,\n modal: options.modal,\n closeOnEsc: options.closeOnEsc,\n onOpen: (dialog) => {\n // 初始化输入框\n const $input = dialog.$element.find('.mdui-textfield-input');\n mdui.updateTextFields($input);\n\n // 聚焦到输入框\n $input[0].focus();\n\n // 捕捉文本框回车键,在单行文本框的情况下触发回调\n if (options.type !== 'textarea' && options.confirmOnEnter === true) {\n $input.on('keydown', (event) => {\n if ((event as KeyboardEvent).keyCode === 13) {\n const value = dialog.$element.find('.mdui-textfield-input').val();\n onConfirm(value, dialog);\n\n if (options.closeOnConfirm) {\n dialog.close();\n }\n\n return false;\n }\n\n return;\n });\n }\n\n // 如果是多行输入框,监听输入框的 input 事件,更新对话框高度\n if (options.type === 'textarea') {\n $input.on('input', () => dialog.handleUpdate());\n }\n\n // 有字符数限制时,加载完文本框后 DOM 会变化,需要更新对话框高度\n if (options.maxlength) {\n dialog.handleUpdate();\n }\n },\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/html';\nimport 'mdui.jq/es/methods/offset';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/width';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transformOrigin';\nimport '../../jq_extends/methods/transitionEnd';\nimport '../../jq_extends/static/guid';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $window } from '../../utils/dom';\nimport { isAllow, register, unlockEvent } from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * Tooltip 组件\n *\n * 请通过 `new mdui.Tooltip()` 调用\n */\n Tooltip: {\n /**\n * 实例化 Tooltip 组件\n * @param selector CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n selector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Tooltip;\n };\n }\n}\n\ntype POSITION = 'auto' | 'bottom' | 'top' | 'left' | 'right';\n\ntype OPTIONS = {\n /**\n * Tooltip 的位置。取值范围包括 `auto`、`bottom`、`top`、`left`、`right`。\n * 为 `auto` 时,会自动判断位置。默认在下方。优先级为 `bottom` > `top` > `left` > `right`。\n * 默认为 `auto`\n */\n position?: POSITION;\n\n /**\n * 延时触发,单位毫秒。默认为 `0`,即没有延时。\n */\n delay?: number;\n\n /**\n * Tooltip 的内容\n */\n content?: string;\n};\n\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n position: 'auto',\n delay: 0,\n content: '',\n};\n\nclass Tooltip {\n /**\n * 触发 tooltip 元素的 JQ 对象\n */\n public $target: JQ;\n\n /**\n * tooltip 元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 tooltip 的状态\n */\n private state: STATE = 'closed';\n\n /**\n * setTimeout 的返回值\n */\n private timeoutId: any = null;\n\n public constructor(\n selector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$target = $(selector).first();\n\n extend(this.options, options);\n\n // 创建 Tooltip HTML\n this.$element = $(\n `
${\n this.options.content\n }
`,\n ).appendTo(document.body);\n\n // 绑定事件。元素处于 disabled 状态时无法触发鼠标事件,为了统一,把 touch 事件也禁用\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n this.$target\n .on('touchstart mouseenter', function (event) {\n if (that.isDisabled(this as HTMLElement)) {\n return;\n }\n\n if (!isAllow(event)) {\n return;\n }\n\n register(event);\n\n that.open();\n })\n .on('touchend mouseleave', function (event) {\n if (that.isDisabled(this as HTMLElement)) {\n return;\n }\n\n if (!isAllow(event)) {\n return;\n }\n\n that.close();\n })\n .on(unlockEvent, function (event) {\n if (that.isDisabled(this as HTMLElement)) {\n return;\n }\n\n register(event);\n });\n }\n\n /**\n * 元素是否已禁用\n * @param element\n */\n private isDisabled(element: HTMLElement): boolean {\n return (\n (element as HTMLInputElement).disabled ||\n $(element).attr('disabled') !== undefined\n );\n }\n\n /**\n * 是否是桌面设备\n */\n private isDesktop(): boolean {\n return $window.width() > 1024;\n }\n\n /**\n * 设置 Tooltip 的位置\n */\n private setPosition(): void {\n let marginLeft: number;\n let marginTop: number;\n\n // 触发的元素\n const targetProps = this.$target[0].getBoundingClientRect();\n\n // 触发的元素和 Tooltip 之间的距离\n const targetMargin = this.isDesktop() ? 14 : 24;\n\n // Tooltip 的宽度和高度\n const tooltipWidth = this.$element[0].offsetWidth;\n const tooltipHeight = this.$element[0].offsetHeight;\n\n // Tooltip 的方向\n let position: POSITION = this.options.position!;\n\n // 自动判断位置,加 2px,使 Tooltip 距离窗口边框至少有 2px 的间距\n if (position === 'auto') {\n if (\n targetProps.top +\n targetProps.height +\n targetMargin +\n tooltipHeight +\n 2 <\n $window.height()\n ) {\n position = 'bottom';\n } else if (targetMargin + tooltipHeight + 2 < targetProps.top) {\n position = 'top';\n } else if (targetMargin + tooltipWidth + 2 < targetProps.left) {\n position = 'left';\n } else if (\n targetProps.width + targetMargin + tooltipWidth + 2 <\n $window.width() - targetProps.left\n ) {\n position = 'right';\n } else {\n position = 'bottom';\n }\n }\n\n // 设置位置\n switch (position) {\n case 'bottom':\n marginLeft = -1 * (tooltipWidth / 2);\n marginTop = targetProps.height / 2 + targetMargin;\n this.$element.transformOrigin('top center');\n break;\n\n case 'top':\n marginLeft = -1 * (tooltipWidth / 2);\n marginTop =\n -1 * (tooltipHeight + targetProps.height / 2 + targetMargin);\n this.$element.transformOrigin('bottom center');\n break;\n\n case 'left':\n marginLeft = -1 * (tooltipWidth + targetProps.width / 2 + targetMargin);\n marginTop = -1 * (tooltipHeight / 2);\n this.$element.transformOrigin('center right');\n break;\n\n case 'right':\n marginLeft = targetProps.width / 2 + targetMargin;\n marginTop = -1 * (tooltipHeight / 2);\n this.$element.transformOrigin('center left');\n break;\n }\n\n const targetOffset = this.$target.offset();\n\n this.$element.css({\n top: `${targetOffset.top + targetProps.height / 2}px`,\n left: `${targetOffset.left + targetProps.width / 2}px`,\n 'margin-left': `${marginLeft}px`,\n 'margin-top': `${marginTop}px`,\n });\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'tooltip', this.$target, this);\n }\n\n /**\n * 动画结束回调\n */\n private transitionEnd(): void {\n if (this.$element.hasClass('mdui-tooltip-open')) {\n this.state = 'opened';\n this.triggerEvent('opened');\n } else {\n this.state = 'closed';\n this.triggerEvent('closed');\n }\n }\n\n /**\n * 当前 tooltip 是否为打开状态\n */\n private isOpen(): boolean {\n return this.state === 'opening' || this.state === 'opened';\n }\n\n /**\n * 执行打开 tooltip\n */\n private doOpen(): void {\n this.state = 'opening';\n this.triggerEvent('open');\n\n this.$element\n .addClass('mdui-tooltip-open')\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 打开 Tooltip\n * @param options 允许每次打开时设置不同的参数\n */\n public open(options?: OPTIONS): void {\n if (this.isOpen()) {\n return;\n }\n\n const oldOptions = extend({}, this.options);\n\n if (options) {\n extend(this.options, options);\n }\n\n // tooltip 的内容有更新\n if (oldOptions.content !== this.options.content) {\n this.$element.html(this.options.content);\n }\n\n this.setPosition();\n\n if (this.options.delay) {\n this.timeoutId = setTimeout(() => this.doOpen(), this.options.delay);\n } else {\n this.timeoutId = null;\n this.doOpen();\n }\n }\n\n /**\n * 关闭 Tooltip\n */\n public close(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n\n if (!this.isOpen()) {\n return;\n }\n\n this.state = 'closing';\n this.triggerEvent('close');\n\n this.$element\n .removeClass('mdui-tooltip-open')\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 切换 Tooltip 的打开状态\n */\n public toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /**\n * 获取 Tooltip 状态。共包含四种状态:`opening`、`opened`、`closing`、`closed`\n */\n public getState(): STATE {\n return this.state;\n }\n}\n\nmdui.Tooltip = Tooltip;\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/on';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-tooltip';\nconst dataName = '_mdui_tooltip';\n\n$(() => {\n // mouseenter 不能冒泡,所以这里用 mouseover 代替\n $document.on('touchstart mouseover', `[${customAttr}]`, function () {\n const $target = $(this);\n let instance = $target.data(dataName);\n\n if (!instance) {\n instance = new mdui.Tooltip(\n this as HTMLElement,\n parseOptions(this as HTMLElement, customAttr),\n );\n $target.data(dataName, instance);\n }\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/appendTo';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/off';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/remove';\nimport { isString } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/reflow';\nimport '../../jq_extends/methods/transform';\nimport '../../jq_extends/methods/transitionEnd';\nimport { $document } from '../../utils/dom';\nimport { dequeue, queue } from '../../utils/queue';\nimport { startEvent } from '../../utils/touchHandler';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 打开一个 Snackbar\n * @param message Snackbar 的文本\n * @param options 配置参数\n */\n snackbar(message: string, options?: OPTIONS): Snackbar;\n\n /**\n * 打开一个 Snackbar\n * @param options 配置参数\n */\n snackbar(options: OPTIONS): Snackbar;\n }\n}\n\ntype OPTIONS = {\n /**\n * Snackbar 的文本。通过 `mdui.snackbar(options)` 调用时,该参数不能为空\n */\n message?: string;\n\n /**\n * 在用户没有操作时多长时间自动隐藏,单位(毫秒)。为 `0` 时表示不自动关闭,默认为 `4000`\n */\n timeout?: number;\n\n /**\n * Snackbar 的位置,默认为 `bottom`。\n * 取值范围包括:\n * `bottom`: 下方\n * `top`: 上方\n * `left-top`: 左上角\n * `left-bottom`: 左下角\n * `right-top`: 右上角\n * `right-bottom`: 右下角\n */\n position?:\n | 'bottom'\n | 'top'\n | 'left-top'\n | 'left-bottom'\n | 'right-top'\n | 'right-bottom';\n\n /**\n * 按钮的文本\n */\n buttonText?: string;\n\n /**\n * 按钮的文本颜色,可以是颜色名或颜色值,如 `red`、`#ffffff`、`rgba(255, 255, 255, 0.3)` 等。默认为 `#90CAF9`\n */\n buttonColor?: string;\n\n /**\n * 点击按钮时是否关闭 Snackbar,默认为 `true`\n */\n closeOnButtonClick?: boolean;\n\n /**\n * 点击或触摸 Snackbar 以外的区域时是否关闭 Snackbar,默认为 `true`\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * 在 Snackbar 上点击的回调函数,参数为 Snackbar 的实例\n */\n onClick?: (snackbar: Snackbar) => void;\n\n /**\n * 点击 Snackbar 上的按钮时的回调函数,参数为 Snackbar 的实例\n */\n onButtonClick?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 开始打开时的回调函数,参数为 Snackbar 的实例\n */\n onOpen?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 打开后的回调函数,参数为 Snackbar 的实例\n */\n onOpened?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 开始关闭时的回调函数,参数为 Snackbar 的实例\n */\n onClose?: (snackbar: Snackbar) => void;\n\n /**\n * Snackbar 关闭后的回调函数,参数为 Snackbar 的实例\n */\n onClosed?: (snackbar: Snackbar) => void;\n};\n\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n message: '',\n timeout: 4000,\n position: 'bottom',\n buttonText: '',\n buttonColor: '',\n closeOnButtonClick: true,\n closeOnOutsideClick: true,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClick: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onButtonClick: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onOpen: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onOpened: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClose: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClosed: () => {},\n};\n\n/**\n * 当前打开着的 Snackbar\n */\nlet currentInst: null | Snackbar = null;\n\n/**\n * 队列名\n */\nconst queueName = '_mdui_snackbar';\n\nclass Snackbar {\n /**\n * Snackbar 元素\n */\n public $element: JQ;\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前 Snackbar 的状态\n */\n private state: STATE = 'closed';\n\n /**\n * setTimeout 的 ID\n */\n private timeoutId: any = null;\n\n public constructor(options: OPTIONS) {\n extend(this.options, options);\n\n // 按钮颜色\n let buttonColorStyle = '';\n let buttonColorClass = '';\n\n if (\n this.options.buttonColor!.indexOf('#') === 0 ||\n this.options.buttonColor!.indexOf('rgb') === 0\n ) {\n buttonColorStyle = `style=\"color:${this.options.buttonColor}\"`;\n } else if (this.options.buttonColor !== '') {\n buttonColorClass = `mdui-text-color-${this.options.buttonColor}`;\n }\n\n // 添加 HTML\n this.$element = $(\n '
' +\n `
${this.options.message}
` +\n (this.options.buttonText\n ? `${this.options.buttonText}`\n : '') +\n '
',\n ).appendTo(document.body);\n\n // 设置位置\n this.setPosition('close');\n\n this.$element.reflow().addClass(`mdui-snackbar-${this.options.position}`);\n }\n\n /**\n * 点击 Snackbar 外面的区域关闭\n * @param event\n */\n private closeOnOutsideClick(event: Event): void {\n const $target = $(event.target as HTMLElement);\n\n if (\n !$target.hasClass('mdui-snackbar') &&\n !$target.parents('.mdui-snackbar').length\n ) {\n currentInst!.close();\n }\n }\n\n /**\n * 设置 Snackbar 的位置\n * @param state\n */\n private setPosition(state: 'open' | 'close'): void {\n const snackbarHeight = this.$element[0].clientHeight;\n const position = this.options.position;\n\n let translateX;\n let translateY;\n\n // translateX\n if (position === 'bottom' || position === 'top') {\n translateX = '-50%';\n } else {\n translateX = '0';\n }\n\n // translateY\n if (state === 'open') {\n translateY = '0';\n } else {\n if (position === 'bottom') {\n translateY = snackbarHeight;\n }\n\n if (position === 'top') {\n translateY = -snackbarHeight;\n }\n\n if (position === 'left-top' || position === 'right-top') {\n translateY = -snackbarHeight - 24;\n }\n\n if (position === 'left-bottom' || position === 'right-bottom') {\n translateY = snackbarHeight + 24;\n }\n }\n\n this.$element.transform(`translate(${translateX},${translateY}px`);\n }\n\n /**\n * 打开 Snackbar\n */\n public open(): void {\n if (this.state === 'opening' || this.state === 'opened') {\n return;\n }\n\n // 如果当前有正在显示的 Snackbar,则先加入队列,等旧 Snackbar 关闭后再打开\n if (currentInst) {\n queue(queueName, () => this.open());\n return;\n }\n\n currentInst = this;\n\n // 开始打开\n this.state = 'opening';\n this.options.onOpen!(this);\n\n this.setPosition('open');\n\n this.$element.transitionEnd(() => {\n if (this.state !== 'opening') {\n return;\n }\n\n this.state = 'opened';\n this.options.onOpened!(this);\n\n // 有按钮时绑定事件\n if (this.options.buttonText) {\n this.$element.find('.mdui-snackbar-action').on('click', () => {\n this.options.onButtonClick!(this);\n if (this.options.closeOnButtonClick) {\n this.close();\n }\n });\n }\n\n // 点击 snackbar 的事件\n this.$element.on('click', (event) => {\n if (!$(event.target as HTMLElement).hasClass('mdui-snackbar-action')) {\n this.options.onClick!(this);\n }\n });\n\n // 点击 Snackbar 外面的区域关闭\n if (this.options.closeOnOutsideClick) {\n $document.on(startEvent, this.closeOnOutsideClick);\n }\n\n // 超时后自动关闭\n if (this.options.timeout) {\n this.timeoutId = setTimeout(() => this.close(), this.options.timeout);\n }\n });\n }\n\n /**\n * 关闭 Snackbar\n */\n public close(): void {\n if (this.state === 'closing' || this.state === 'closed') {\n return;\n }\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n\n if (this.options.closeOnOutsideClick) {\n $document.off(startEvent, this.closeOnOutsideClick);\n }\n\n this.state = 'closing';\n this.options.onClose!(this);\n\n this.setPosition('close');\n\n this.$element.transitionEnd(() => {\n if (this.state !== 'closing') {\n return;\n }\n\n currentInst = null;\n this.state = 'closed';\n this.options.onClosed!(this);\n this.$element.remove();\n dequeue(queueName);\n });\n }\n}\n\nmdui.snackbar = function (message: any, options: any = {}): Snackbar {\n if (isString(message)) {\n options.message = message;\n } else {\n options = message;\n }\n\n const instance = new Snackbar(options);\n\n instance.open();\n\n return instance;\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/html';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport { isUndefined } from 'mdui.jq/es/utils';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * 如果需要修改已有的圆形进度条组件,需要调用该方法来重新初始化组件。\n *\n * 若传入了参数,则只重新初始化该参数对应的圆形进度条。若没有传入参数,则重新初始化所有圆形进度条。\n * @param selector CSS 选择器、或 DOM 元素、或 DOM 元素组成的数组、或 JQ 对象\n */\n updateSpinners(\n selector?: Selector | HTMLElement | ArrayLike,\n ): void;\n }\n}\n\n/**\n * layer 的 HTML 结构\n * @param index\n */\nfunction layerHTML(index: number | false = false): string {\n return (\n `
` +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
'\n );\n}\n\n/**\n * 填充 HTML\n * @param spinner\n */\nfunction fillHTML(spinner: HTMLElement): void {\n const $spinner = $(spinner);\n\n const layer = $spinner.hasClass('mdui-spinner-colorful')\n ? layerHTML(1) + layerHTML(2) + layerHTML(3) + layerHTML(4)\n : layerHTML();\n\n $spinner.html(layer);\n}\n\n$(() => {\n // 页面加载完后自动填充 HTML 结构\n mdui.mutation('.mdui-spinner', function () {\n fillHTML(this);\n });\n});\n\nmdui.updateSpinners = function (\n selector?: Selector | HTMLElement | ArrayLike,\n): void {\n const $elements = isUndefined(selector) ? $('.mdui-spinner') : $(selector);\n\n $elements.each(function () {\n fillHTML(this);\n });\n};\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/removeClass';\nimport mdui from '../../mdui';\nimport '../../global/mutation';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document } from '../../utils/dom';\nimport '../headroom';\n\n$(() => {\n // 切换导航项\n $document.on('click', '.mdui-bottom-nav>a', function () {\n const $item = $(this as HTMLElement);\n const $bottomNav = $item.parent();\n\n $bottomNav.children('a').each((index, item) => {\n const isThis = $item.is(item);\n\n if (isThis) {\n componentEvent('change', 'bottomNav', $bottomNav[0], undefined, {\n index,\n });\n }\n\n isThis\n ? $(item).addClass('mdui-bottom-nav-active')\n : $(item).removeClass('mdui-bottom-nav-active');\n });\n });\n\n // 滚动时隐藏 mdui-bottom-nav-scroll-hide\n mdui.mutation('.mdui-bottom-nav-scroll-hide', function () {\n new mdui.Headroom(this, {\n pinnedClass: 'mdui-headroom-pinned-down',\n unpinnedClass: 'mdui-headroom-unpinned-down',\n });\n });\n});\n","import $ from 'mdui.jq/es/$';\nimport contains from 'mdui.jq/es/functions/contains';\nimport extend from 'mdui.jq/es/functions/extend';\nimport { JQ } from 'mdui.jq/es/JQ';\nimport 'mdui.jq/es/methods/addClass';\nimport 'mdui.jq/es/methods/attr';\nimport 'mdui.jq/es/methods/children';\nimport 'mdui.jq/es/methods/css';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/each';\nimport 'mdui.jq/es/methods/find';\nimport 'mdui.jq/es/methods/first';\nimport 'mdui.jq/es/methods/hasClass';\nimport 'mdui.jq/es/methods/height';\nimport 'mdui.jq/es/methods/is';\nimport 'mdui.jq/es/methods/on';\nimport 'mdui.jq/es/methods/parent';\nimport 'mdui.jq/es/methods/parents';\nimport 'mdui.jq/es/methods/removeClass';\nimport 'mdui.jq/es/methods/width';\nimport Selector from 'mdui.jq/es/types/Selector';\nimport mdui from '../../mdui';\nimport '../../jq_extends/methods/transformOrigin';\nimport '../../jq_extends/methods/transitionEnd';\nimport '../../jq_extends/static/throttle';\nimport { componentEvent } from '../../utils/componentEvent';\nimport { $document, $window } from '../../utils/dom';\n\ndeclare module '../../interfaces/MduiStatic' {\n interface MduiStatic {\n /**\n * Menu 组件\n *\n * 请通过 `new mdui.Menu()` 调用\n */\n Menu: {\n /**\n * 实例化 Menu 组件\n * @param anchorSelector 触发菜单的元素的 CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param menuSelector 菜单的 CSS 选择器、或 DOM 元素、或 JQ 对象\n * @param options 配置参数\n */\n new (\n anchorSelector: Selector | HTMLElement | ArrayLike,\n menuSelector: Selector | HTMLElement | ArrayLike,\n options?: OPTIONS,\n ): Menu;\n };\n }\n}\n\ntype OPTIONS = {\n /**\n * 菜单相对于触发它的元素的位置,默认为 `auto`。\n * 取值范围包括:\n * `top`: 菜单在触发它的元素的上方\n * `bottom`: 菜单在触发它的元素的下方\n * `center`: 菜单在窗口中垂直居中\n * `auto`: 自动判断位置。优先级为:`bottom` > `top` > `center`\n */\n position?: 'auto' | 'top' | 'bottom' | 'center';\n\n /**\n * 菜单与触发它的元素的对其方式,默认为 `auto`。\n * 取值范围包括:\n * `left`: 菜单与触发它的元素左对齐\n * `right`: 菜单与触发它的元素右对齐\n * `center`: 菜单在窗口中水平居中\n * `auto`: 自动判断位置:优先级为:`left` > `right` > `center`\n */\n align?: 'auto' | 'left' | 'right' | 'center';\n\n /**\n * 菜单与窗口边框至少保持多少间距,单位为 px,默认为 `16`\n */\n gutter?: number;\n\n /**\n * 菜单的定位方式,默认为 `false`。\n * 为 `true` 时,菜单使用 fixed 定位。在页面滚动时,菜单将保持在窗口固定位置,不随滚动条滚动。\n * 为 `false` 时,菜单使用 absolute 定位。在页面滚动时,菜单将随着页面一起滚动。\n */\n fixed?: boolean;\n\n /**\n * 菜单是否覆盖在触发它的元素的上面,默认为 `auto`\n * 为 `true` 时,使菜单覆盖在触发它的元素的上面\n * 为 `false` 时,使菜单不覆盖触发它的元素\n * 为 `auto` 时,简单菜单覆盖触发它的元素。级联菜单不覆盖触发它的元素\n */\n covered?: boolean | 'auto';\n\n /**\n * 子菜单的触发方式,默认为 `hover`\n * 为 `click` 时,点击时触发子菜单\n * 为 `hover` 时,鼠标悬浮时触发子菜单\n */\n subMenuTrigger?: 'click' | 'hover';\n\n /**\n * 子菜单的触发延迟时间(单位:毫秒),只有在 `subMenuTrigger: hover` 时,这个参数才有效,默认为 `200`\n */\n subMenuDelay?: number;\n};\n\ntype EVENT = 'open' | 'opened' | 'close' | 'closed';\ntype STATE = 'opening' | 'opened' | 'closing' | 'closed';\n\nconst DEFAULT_OPTIONS: OPTIONS = {\n position: 'auto',\n align: 'auto',\n gutter: 16,\n fixed: false,\n covered: 'auto',\n subMenuTrigger: 'hover',\n subMenuDelay: 200,\n};\n\nclass Menu {\n /**\n * 触发菜单的元素的 JQ 对象\n */\n public $anchor: JQ;\n\n /**\n * 菜单元素的 JQ 对象\n */\n public $element: JQ;\n\n /**\n * 配置参数\n */\n public options: OPTIONS = extend({}, DEFAULT_OPTIONS);\n\n /**\n * 当前菜单状态\n */\n private state: STATE = 'closed';\n\n /**\n * 是否是级联菜单\n */\n private isCascade: boolean;\n\n /**\n * 菜单是否覆盖在触发它的元素的上面\n */\n private isCovered: boolean;\n\n public constructor(\n anchorSelector: Selector | HTMLElement | ArrayLike,\n menuSelector: Selector | HTMLElement | ArrayLike,\n options: OPTIONS = {},\n ) {\n this.$anchor = $(anchorSelector).first();\n this.$element = $(menuSelector).first();\n\n // 触发菜单的元素 和 菜单必须是同级的元素,否则菜单可能不能定位\n if (!this.$anchor.parent().is(this.$element.parent())) {\n throw new Error('anchorSelector and menuSelector must be siblings');\n }\n\n extend(this.options, options);\n\n // 是否是级联菜单\n this.isCascade = this.$element.hasClass('mdui-menu-cascade');\n\n // covered 参数处理\n this.isCovered =\n this.options.covered === 'auto' ? !this.isCascade : this.options.covered!;\n\n // 点击触发菜单切换\n this.$anchor.on('click', () => this.toggle());\n\n // 点击菜单外面区域关闭菜单\n $document.on('click touchstart', (event: Event) => {\n const $target = $(event.target as HTMLElement);\n\n if (\n this.isOpen() &&\n !$target.is(this.$element) &&\n !contains(this.$element[0], $target[0]) &&\n !$target.is(this.$anchor) &&\n !contains(this.$anchor[0], $target[0])\n ) {\n this.close();\n }\n });\n\n // 点击不含子菜单的菜单条目关闭菜单\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n $document.on('click', '.mdui-menu-item', function () {\n const $item = $(this);\n\n if (\n !$item.find('.mdui-menu').length &&\n $item.attr('disabled') === undefined\n ) {\n that.close();\n }\n });\n\n // 绑定点击或鼠标移入含子菜单的条目的事件\n this.bindSubMenuEvent();\n\n // 窗口大小变化时,重新调整菜单位置\n $window.on(\n 'resize',\n $.throttle(() => this.readjust(), 100),\n );\n }\n\n /**\n * 是否为打开状态\n */\n private isOpen(): boolean {\n return this.state === 'opening' || this.state === 'opened';\n }\n\n /**\n * 触发组件事件\n * @param name\n */\n private triggerEvent(name: EVENT): void {\n componentEvent(name, 'menu', this.$element, this);\n }\n\n /**\n * 调整主菜单位置\n */\n private readjust(): void {\n let menuLeft;\n let menuTop;\n\n // 菜单位置和方向\n let position: 'bottom' | 'top' | 'center';\n let align: 'left' | 'right' | 'center';\n\n // window 窗口的宽度和高度\n const windowHeight = $window.height();\n const windowWidth = $window.width();\n\n // 配置参数\n const gutter = this.options.gutter!;\n const isCovered = this.isCovered;\n const isFixed = this.options.fixed;\n\n // 动画方向参数\n let transformOriginX;\n let transformOriginY;\n\n // 菜单的原始宽度和高度\n const menuWidth = this.$element.width();\n const menuHeight = this.$element.height();\n\n // 触发菜单的元素在窗口中的位置\n const anchorRect = this.$anchor[0].getBoundingClientRect();\n const anchorTop = anchorRect.top;\n const anchorLeft = anchorRect.left;\n const anchorHeight = anchorRect.height;\n const anchorWidth = anchorRect.width;\n const anchorBottom = windowHeight - anchorTop - anchorHeight;\n const anchorRight = windowWidth - anchorLeft - anchorWidth;\n\n // 触发元素相对其拥有定位属性的父元素的位置\n const anchorOffsetTop = this.$anchor[0].offsetTop;\n const anchorOffsetLeft = this.$anchor[0].offsetLeft;\n\n // 自动判断菜单位置\n if (this.options.position === 'auto') {\n if (anchorBottom + (isCovered ? anchorHeight : 0) > menuHeight + gutter) {\n // 判断下方是否放得下菜单\n position = 'bottom';\n } else if (\n anchorTop + (isCovered ? anchorHeight : 0) >\n menuHeight + gutter\n ) {\n // 判断上方是否放得下菜单\n position = 'top';\n } else {\n // 上下都放不下,居中显示\n position = 'center';\n }\n } else {\n position = this.options.position!;\n }\n\n // 自动判断菜单对齐方式\n if (this.options.align === 'auto') {\n if (anchorRight + anchorWidth > menuWidth + gutter) {\n // 判断右侧是否放得下菜单\n align = 'left';\n } else if (anchorLeft + anchorWidth > menuWidth + gutter) {\n // 判断左侧是否放得下菜单\n align = 'right';\n } else {\n // 左右都放不下,居中显示\n align = 'center';\n }\n } else {\n align = this.options.align!;\n }\n\n // 设置菜单位置\n if (position === 'bottom') {\n transformOriginY = '0';\n menuTop =\n (isCovered ? 0 : anchorHeight) +\n (isFixed ? anchorTop : anchorOffsetTop);\n } else if (position === 'top') {\n transformOriginY = '100%';\n menuTop =\n (isCovered ? anchorHeight : 0) +\n (isFixed ? anchorTop - menuHeight : anchorOffsetTop - menuHeight);\n } else {\n transformOriginY = '50%';\n\n // =====================在窗口中居中\n // 显示的菜单的高度,简单菜单高度不超过窗口高度,若超过了则在菜单内部显示滚动条\n // 级联菜单内部不允许出现滚动条\n let menuHeightTemp = menuHeight;\n\n // 简单菜单比窗口高时,限制菜单高度\n if (!this.isCascade) {\n if (menuHeight + gutter * 2 > windowHeight) {\n menuHeightTemp = windowHeight - gutter * 2;\n this.$element.height(menuHeightTemp);\n }\n }\n\n menuTop =\n (windowHeight - menuHeightTemp) / 2 +\n (isFixed ? 0 : anchorOffsetTop - anchorTop);\n }\n\n this.$element.css('top', `${menuTop}px`);\n\n // 设置菜单对齐方式\n if (align === 'left') {\n transformOriginX = '0';\n menuLeft = isFixed ? anchorLeft : anchorOffsetLeft;\n } else if (align === 'right') {\n transformOriginX = '100%';\n menuLeft = isFixed\n ? anchorLeft + anchorWidth - menuWidth\n : anchorOffsetLeft + anchorWidth - menuWidth;\n } else {\n transformOriginX = '50%';\n\n //=======================在窗口中居中\n // 显示的菜单的宽度,菜单宽度不能超过窗口宽度\n let menuWidthTemp = menuWidth;\n\n // 菜单比窗口宽,限制菜单宽度\n if (menuWidth + gutter * 2 > windowWidth) {\n menuWidthTemp = windowWidth - gutter * 2;\n this.$element.width(menuWidthTemp);\n }\n\n menuLeft =\n (windowWidth - menuWidthTemp) / 2 +\n (isFixed ? 0 : anchorOffsetLeft - anchorLeft);\n }\n\n this.$element.css('left', `${menuLeft}px`);\n\n // 设置菜单动画方向\n this.$element.transformOrigin(`${transformOriginX} ${transformOriginY}`);\n }\n\n /**\n * 调整子菜单的位置\n * @param $submenu\n */\n private readjustSubmenu($submenu: JQ): void {\n const $item = $submenu.parent('.mdui-menu-item');\n\n let submenuTop;\n let submenuLeft;\n\n // 子菜单位置和方向\n let position: 'top' | 'bottom';\n let align: 'left' | 'right';\n\n // window 窗口的宽度和高度\n const windowHeight = $window.height();\n const windowWidth = $window.width();\n\n // 动画方向参数\n let transformOriginX;\n let transformOriginY;\n\n // 子菜单的原始宽度和高度\n const submenuWidth = $submenu.width();\n const submenuHeight = $submenu.height();\n\n // 触发子菜单的菜单项的宽度高度\n const itemRect = $item[0].getBoundingClientRect();\n const itemWidth = itemRect.width;\n const itemHeight = itemRect.height;\n const itemLeft = itemRect.left;\n const itemTop = itemRect.top;\n\n // 判断菜单上下位置\n if (windowHeight - itemTop > submenuHeight) {\n // 判断下方是否放得下菜单\n position = 'bottom';\n } else if (itemTop + itemHeight > submenuHeight) {\n // 判断上方是否放得下菜单\n position = 'top';\n } else {\n // 默认放在下方\n position = 'bottom';\n }\n\n // 判断菜单左右位置\n if (windowWidth - itemLeft - itemWidth > submenuWidth) {\n // 判断右侧是否放得下菜单\n align = 'left';\n } else if (itemLeft > submenuWidth) {\n // 判断左侧是否放得下菜单\n align = 'right';\n } else {\n // 默认放在右侧\n align = 'left';\n }\n\n // 设置菜单位置\n if (position === 'bottom') {\n transformOriginY = '0';\n submenuTop = '0';\n } else if (position === 'top') {\n transformOriginY = '100%';\n submenuTop = -submenuHeight + itemHeight;\n }\n\n $submenu.css('top', `${submenuTop}px`);\n\n // 设置菜单对齐方式\n if (align === 'left') {\n transformOriginX = '0';\n submenuLeft = itemWidth;\n } else if (align === 'right') {\n transformOriginX = '100%';\n submenuLeft = -submenuWidth;\n }\n\n $submenu.css('left', `${submenuLeft}px`);\n\n // 设置菜单动画方向\n $submenu.transformOrigin(`${transformOriginX} ${transformOriginY}`);\n }\n\n /**\n * 打开子菜单\n * @param $submenu\n */\n private openSubMenu($submenu: JQ): void {\n this.readjustSubmenu($submenu);\n\n $submenu\n .addClass('mdui-menu-open')\n .parent('.mdui-menu-item')\n .addClass('mdui-menu-item-active');\n }\n\n /**\n * 关闭子菜单,及其嵌套的子菜单\n * @param $submenu\n */\n private closeSubMenu($submenu: JQ): void {\n // 关闭子菜单\n $submenu\n .removeClass('mdui-menu-open')\n .addClass('mdui-menu-closing')\n .transitionEnd(() => $submenu.removeClass('mdui-menu-closing'))\n\n // 移除激活状态的样式\n .parent('.mdui-menu-item')\n .removeClass('mdui-menu-item-active');\n\n // 循环关闭嵌套的子菜单\n $submenu.find('.mdui-menu').each((_, menu) => {\n const $subSubmenu = $(menu);\n\n $subSubmenu\n .removeClass('mdui-menu-open')\n .addClass('mdui-menu-closing')\n .transitionEnd(() => $subSubmenu.removeClass('mdui-menu-closing'))\n .parent('.mdui-menu-item')\n .removeClass('mdui-menu-item-active');\n });\n }\n\n /**\n * 切换子菜单状态\n * @param $submenu\n */\n private toggleSubMenu($submenu: JQ): void {\n $submenu.hasClass('mdui-menu-open')\n ? this.closeSubMenu($submenu)\n : this.openSubMenu($submenu);\n }\n\n /**\n * 绑定子菜单事件\n */\n private bindSubMenuEvent(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n\n // 点击打开子菜单\n this.$element.on('click', '.mdui-menu-item', function (event) {\n const $item = $(this as HTMLElement);\n const $target = $(event.target as HTMLElement);\n\n // 禁用状态菜单不操作\n if ($item.attr('disabled') !== undefined) {\n return;\n }\n\n // 没有点击在子菜单的菜单项上时,不操作(点在了子菜单的空白区域、或分隔线上)\n if ($target.is('.mdui-menu') || $target.is('.mdui-divider')) {\n return;\n }\n\n // 阻止冒泡,点击菜单项时只在最后一级的 mdui-menu-item 上生效,不向上冒泡\n if (!$target.parents('.mdui-menu-item').first().is($item)) {\n return;\n }\n\n // 当前菜单的子菜单\n const $submenu = $item.children('.mdui-menu');\n\n // 先关闭除当前子菜单外的所有同级子菜单\n $item\n .parent('.mdui-menu')\n .children('.mdui-menu-item')\n .each((_, item) => {\n const $tmpSubmenu = $(item).children('.mdui-menu');\n\n if (\n $tmpSubmenu.length &&\n (!$submenu.length || !$tmpSubmenu.is($submenu))\n ) {\n that.closeSubMenu($tmpSubmenu);\n }\n });\n\n // 切换当前子菜单\n if ($submenu.length) {\n that.toggleSubMenu($submenu);\n }\n });\n\n if (this.options.subMenuTrigger === 'hover') {\n // 临时存储 setTimeout 对象\n let timeout: any = null;\n let timeoutOpen: any = null;\n\n this.$element.on('mouseover mouseout', '.mdui-menu-item', function (\n event,\n ) {\n const $item = $(this as HTMLElement);\n const eventType = event.type;\n const $relatedTarget = $(\n (event as MouseEvent).relatedTarget as HTMLElement,\n );\n\n // 禁用状态的菜单不操作\n if ($item.attr('disabled') !== undefined) {\n return;\n }\n\n // 用 mouseover 模拟 mouseenter\n if (eventType === 'mouseover') {\n if (\n !$item.is($relatedTarget) &&\n contains($item[0], $relatedTarget[0])\n ) {\n return;\n }\n }\n\n // 用 mouseout 模拟 mouseleave\n else if (eventType === 'mouseout') {\n if (\n $item.is($relatedTarget) ||\n contains($item[0], $relatedTarget[0])\n ) {\n return;\n }\n }\n\n // 当前菜单项下的子菜单,未必存在\n const $submenu = $item.children('.mdui-menu');\n\n // 鼠标移入菜单项时,显示菜单项下的子菜单\n if (eventType === 'mouseover') {\n if ($submenu.length) {\n // 当前子菜单准备打开时,如果当前子菜单正准备着关闭,不用再关闭了\n const tmpClose = $submenu.data('timeoutClose.mdui.menu');\n if (tmpClose) {\n clearTimeout(tmpClose);\n }\n\n // 如果当前子菜单已经打开,不操作\n if ($submenu.hasClass('mdui-menu-open')) {\n return;\n }\n\n // 当前子菜单准备打开时,其他准备打开的子菜单不用再打开了\n clearTimeout(timeoutOpen);\n\n // 准备打开当前子菜单\n timeout = timeoutOpen = setTimeout(\n () => that.openSubMenu($submenu),\n that.options.subMenuDelay,\n );\n\n $submenu.data('timeoutOpen.mdui.menu', timeout);\n }\n }\n\n // 鼠标移出菜单项时,关闭菜单项下的子菜单\n else if (eventType === 'mouseout') {\n if ($submenu.length) {\n // 鼠标移出菜单项时,如果当前菜单项下的子菜单正准备打开,不用再打开了\n const tmpOpen = $submenu.data('timeoutOpen.mdui.menu');\n if (tmpOpen) {\n clearTimeout(tmpOpen);\n }\n\n // 准备关闭当前子菜单\n timeout = setTimeout(\n () => that.closeSubMenu($submenu),\n that.options.subMenuDelay,\n );\n\n $submenu.data('timeoutClose.mdui.menu', timeout);\n }\n }\n });\n }\n }\n\n /**\n * 动画结束回调\n */\n private transitionEnd(): void {\n this.$element.removeClass('mdui-menu-closing');\n\n if (this.state === 'opening') {\n this.state = 'opened';\n this.triggerEvent('opened');\n }\n\n if (this.state === 'closing') {\n this.state = 'closed';\n this.triggerEvent('closed');\n\n // 关闭后,恢复菜单样式到默认状态,并恢复 fixed 定位\n this.$element.css({\n top: '',\n left: '',\n width: '',\n position: 'fixed',\n });\n }\n }\n\n /**\n * 切换菜单状态\n */\n public toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n /**\n * 打开菜单\n */\n public open(): void {\n if (this.isOpen()) {\n return;\n }\n\n this.state = 'opening';\n this.triggerEvent('open');\n\n this.readjust();\n\n this.$element\n // 菜单隐藏状态使用使用 fixed 定位。\n .css('position', this.options.fixed ? 'fixed' : 'absolute')\n .addClass('mdui-menu-open')\n .transitionEnd(() => this.transitionEnd());\n }\n\n /**\n * 关闭菜单\n */\n public close(): void {\n if (!this.isOpen()) {\n return;\n }\n\n this.state = 'closing';\n this.triggerEvent('close');\n\n // 菜单开始关闭时,关闭所有子菜单\n this.$element.find('.mdui-menu').each((_, submenu) => {\n this.closeSubMenu($(submenu));\n });\n\n this.$element\n .removeClass('mdui-menu-open')\n .addClass('mdui-menu-closing')\n .transitionEnd(() => this.transitionEnd());\n }\n}\n\nmdui.Menu = Menu;\n","import $ from 'mdui.jq/es/$';\nimport 'mdui.jq/es/methods/data';\nimport 'mdui.jq/es/methods/on';\nimport mdui from '../../mdui';\nimport { $document } from '../../utils/dom';\nimport { parseOptions } from '../../utils/parseOptions';\nimport './index';\n\nconst customAttr = 'mdui-menu';\nconst dataName = '_mdui_menu';\n\ntype OPTIONS = {\n target: string;\n position?: 'auto' | 'top' | 'bottom' | 'center';\n align?: 'auto' | 'left' | 'right' | 'center';\n gutter?: number;\n fixed?: boolean;\n covered?: boolean | 'auto';\n subMenuTrigger?: 'click' | 'hover';\n subMenuDelay?: number;\n};\n\n$(() => {\n $document.on('click', `[${customAttr}]`, function () {\n const $this = $(this as HTMLElement);\n let instance = $this.data(dataName);\n\n if (!instance) {\n const options = parseOptions(this as HTMLElement, customAttr) as OPTIONS;\n const menuSelector = options.target;\n delete options.target;\n\n instance = new mdui.Menu($this, menuSelector, options);\n $this.data(dataName, instance);\n\n instance.toggle();\n }\n });\n});\n"],"names":["t","e","bubbles","cancelable","detail","n","document","createEvent","initCustomEvent","finallyConstructor","callback","constructor","this","then","value","resolve","reason","reject","MouseEvent","initMouseEvent","window","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","prototype","Event","CustomEvent","setTimeoutFunc","setTimeout","isArray","x","Boolean","length","noop","Promise","fn","TypeError","_state","_handled","_value","undefined","_deferreds","doResolve","handle","self","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","promise","push","newValue","finale","thisArg","apply","arguments","_unhandledRejectionFn","i","len","Handler","done","ex","prom","promiseFinally","all","arr","args","Array","slice","call","remaining","res","val","race","setImmediate","err","console","warn","globalNS","global","Error","isFunction","target","isString","isNumber","isUndefined","isNull","isWindow","Window","isDocument","Document","isElement","Element","isArrayLike","isObjectLike","toElement","documentElement","toCamelCase","string","replace","_","letter","toUpperCase","toKebabCase","replacer","toLowerCase","getComputedStyleValue","element","name","getComputedStyle","getPropertyValue","isBorderBox","getExtraWidth","direction","extra","const","position","reduce","prev","index","let","prop","parseFloat","getStyle","valueNumber","getBoundingClientRect","getChildNodesArray","parent","tempParent","createElement","innerHTML","childNodes","returnFalse","cssNumber","each","keys","Object","JQ","item","$","selector","test","readyState","body","addEventListener","html","trim","toCreate","li","tr","td","th","tbody","option","childTag","parentTag","indexOf","match","querySelectorAll","getElementById","Node","$document","$window","$body","addClass","mdui","contains","container","merge","first","second","get","find","foundElements","handlers","mduiElementId","getElementId","key","parse","type","parts","split","ns","sort","join","matcherFor","RegExp","remove","types","func","removeEvent","handler","handlersInElement","id","removeEventListener","proxy","forEach","event","filter","extend","object1","objectN","unshift","object","param","obj","destructure","keyTmp","v","encodeURIComponent","trigger","extraParameters","eventObject","eventParams","isMouseEvent","_detail","_ns","dispatchEvent","globalOptions","ajaxEvents","ajaxStart","ajaxSuccess","ajaxError","ajaxComplete","isQueryStringData","method","appendQuery","url","query","ajax","options","defaults","textStatus","isCanceled","mergedOptions","data","processData","async","cache","username","password","headers","xhrFields","statusCode","dataType","contentType","timeout","location","toString","params","result1","result2","ArrayBuffer","Blob","FormData","Date","now","xhrTimeout","xhr","XMLHttpRequest","open","setRequestHeader","$2","host","onload","clearTimeout","responseData","isHttpStatusSuccess","status","JSON","responseText","responseType","response","onerror","statusText","onabort","abort","send","ajaxSetup","dataNS","setObjectToElement","map","elements","concat","removeData","nameItem","unique","result","dir","$elements","nameIndex","node","is","shift","add","className","getAttribute","cls","classList","setAttribute","$element","reverse","$target","parentNode","newItem","cloneNode","existingItem","nextSibling","insertBefore","off","on","one","_this","origCallback","elementId","useCapture","proxyFn","callFn","elem","preventDefault","stopPropagation","_data","eventName","clone","isMatched","matches","msMatchesSelector","$compareWith","compare","removeChild","childLength","child","appendChild","contents","content","extraChilds","$result","k","removeAttribute","style","set","children","__","childNode","eq","closest","matched","parents","rbrace","dataAttr","nodeType","handleExtraWidth","funcIndex","includeMargin","multiply","getExtraWidthValue","documentMode","clientProp","scrollProp","offsetProp","innerProp","doc","Math","max","floatStyle","css","getClientRects","top","left","rect","win","ownerDocument","defaultView","pageYOffset","pageXOffset","resultData","attrs","attributes","empty","$selector","has","$targets","hasClass","funcName","margin","isSet","elementIndex","computedValue","dimension","suffix","hide","display","propName","0","1","2","firstElement","selected","checked","outerHTML","last","not","$excludes","offsetParent","currentOffset","parentOffset","offset","$offsetParent","currentTop","currentLeft","currentTopString","currentLeftString","currentPosition","removeAttr","attributeName","names","removeProp","replaceWith","newContent","before","replaceAll","serializeArray","HTMLFormElement","nodeName","disabled","serialize","elementDisplay","show","siblings","prevAll","nextAll","toggle","reflow","clientLeft","transition","duration","webkitTransitionDuration","transitionDuration","transitionEnd","that","events","fireCallback","transformOrigin","webkitTransformOrigin","transform","webkitTransform","entries","mutation","apiInit","selectors","$this","showOverlay","zIndex","$overlay","appendTo","level","hideOverlay","force","removeClass","lockScreen","newBodyWidth","width","unlockScreen","throttle","delay","timer","GUID","componentEvent","componentName","instance","parameters","inst","fullEventName","jQuery","guid","s4","floor","random","substring","Headroom","DEFAULT_OPTIONS","tolerance","down","up","enable","initialClass","pinnedClass","unpinnedClass","parseOptions","attr","Function","onScroll","rafId","requestAnimationFrame","currentScrollY","lastScrollY","toleranceExceeded","abs","unpin","pin","triggerEvent","state","isEnable","disable","cancelAnimationFrame","getState","customAttr","CollapseAbstract","classPrefix","getNamespace","classItem","classItemOpen","classHeader","classBody","bindEvent","accordion","$items","getItems","$item","close","isOpen","getItem","$content","height","scrollHeight","openAll","closeAll","Collapse","Panel","Table","init","$thRow","$tdRows","selectable","updateThCheckbox","updateTdCheckbox","updateNumericCol","createCheckboxHTML","tag","updateThCheckboxStatus","checkbox","$thCheckbox","selectedRow","tdRowsLength","indeterminate","rowSelectedClass","row","$row","$checkbox","prependTo","$tdCheckboxs","isCheckedAll","numericClass","isNumericCol","$td","dataName","updateTables","startEvent","moveEvent","endEvent","cancelEvent","unlockEvent","touches","isAllow","register","$ripple","touchPosition","TouchEvent","touchStartX","pageX","touchStartY","pageY","innerHeight","innerWidth","center","diameter","pow","translate","wave","$wave","removeTimer","removeRipple","showRipple","hidden","hideRipple","defaultData","reInit","domLoadedEvent","inputEvent","input","$input","eventType","inputType","$textfield","validity","valid","inputValue","hasExtraSpace","outerHeight","maxLength","text","updateValueStyle","$slider","$track","_slider_$track","$fill","_slider_$fill","$thumb","_slider_$thumb","_slider_$input","min","_slider_min","_slider_max","isDisabled","_slider_disabled","isDiscrete","_slider_discrete","$thumbText","_slider_$thumbText","percent","append","focus","updateTextFields","rangeSelector","updateSliders","Fab","$btn","$dial","$dialBtns","btn","transitionDelay","webkitTransitionDelay","Select","$native","uniqueID","handleUpdate","gutter","readjustMenu","transformOriginY","menuMarginTop","windowHeight","elementHeight","$itemFirst","itemHeight","itemMargin","parseInt","menuWidth","menuHeight","size","elementTop","menuMaxHeight","selectedIndex","menuMaxMarginTop","menuTop","$menu","margin-top","transform-origin","selectedValue","itemsData","textContent","selectedText","$selected","after","Tab","$tabs","$indicator","hash","tab","activeIndex","setActive","setIndicatorPosition","bindTabEvent","loop","$tab","clickEvent","targetId","substr","$activeTab","activeTabOffset","scrollLeft","next","$oldTabs","$newTabs","oldTabsElement","newTabsElement","Drawer","isDesktop","overlay","swipeSupport","swipe","openNavEventHandler","swipeStartX","swiping","maybeSwiping","swipeAreaWidth","setPosition","translateX","transformCSS","cleanPosition","webkitTransition","getMaxTranslateX","getTranslateX","currentX","onBodyTouchEnd","touchX","changedTouches","translateRatio","swipingState","touchmove","onBodyTouchMove","touchend","touchcancel","touchY","dXAbs","dYAbs","onBodyTouchStart","$drawer","queue","dequeue","Dialog","cancel","closeOnCancel","confirm","closeOnConfirm","history","modal","closeOnEsc","destroyOnClosed","currentInst","queueName","isLockScreen","readjust","$title","$actions","hashchangeEvent","overlayClick","destroy","doOpen","historyBack","back","keyCode","$dialog","DEFAULT_BUTTON","bold","onClick","title","buttons","stackedButtons","cssClass","onOpen","onOpened","onClose","onClosed","confirmText","dialog","buttonsHTML","HTML","cancelText","alert","onConfirm","onCancel","maxlength","defaultValue","confirmOnEnter","prompt","label","Tooltip","marginLeft","marginTop","targetProps","targetMargin","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","targetOffset","margin-left","oldOptions","timeoutId","Snackbar","buttonColorStyle","buttonColorClass","buttonColor","buttonText","message","closeOnButtonClick","closeOnOutsideClick","onButtonClick","layerHTML","fillHTML","spinner","$spinner","layer","translateY","snackbarHeight","clientHeight","snackbar","$bottomNav","isThis","Menu","anchorSelector","menuSelector","$anchor","isCascade","isCovered","covered","bindSubMenuEvent","align","fixed","updateSpinners","subMenuTrigger","subMenuDelay","menuLeft","transformOriginX","windowWidth","isFixed","anchorRect","anchorTop","anchorLeft","anchorHeight","anchorWidth","anchorBottom","anchorRight","anchorOffsetTop","offsetTop","anchorOffsetLeft","offsetLeft","menuHeightTemp","menuWidthTemp","readjustSubmenu","$submenu","submenuTop","submenuLeft","submenuWidth","submenuHeight","itemRect","itemWidth","itemLeft","itemTop","openSubMenu","closeSubMenu","menu","$subSubmenu","toggleSubMenu","$tmpSubmenu","timeoutOpen","$relatedTarget","tmpClose","tmpOpen","submenu"],"mappings":";;;;;0LAAY,SAASA,EAAEA,EAAEC,GAAGA,EAAEA,GAAG,CAACC,SAAQ,EAAGC,YAAW,EAAGC,YAAO,GAAQ,IAAIC,EAAEC,SAASC,YAAY,eAAe,OAAOF,EAAEG,gBAAgBR,EAAEC,EAAEC,QAAQD,EAAEE,WAAWF,EAAEG,QAAQC,ECGhL,SAASI,EAAmBC,GAC1B,IAAIC,EAAcC,KAAKD,YACvB,OAAOC,KAAKC,KACV,SAASC,GAEP,OAAOH,EAAYI,QAAQL,KAAYG,KAAK,WAC1C,OAAOC,KAGX,SAASE,GAEP,OAAOL,EAAYI,QAAQL,KAAYG,KAAK,WAE1C,OAAOF,EAAYM,OAAOD,QChBjC,WAAW,IAAI,OAAO,IAAIE,WAAW,QAAQ,MAAMjB,IAAU,SAAFA,EAAWA,EAAED,GAAGA,EAAEA,GAAG,CAACE,SAAQ,EAAGC,YAAW,GAAI,IAAIE,EAAEC,SAASC,YAAY,cAAc,OAAOF,EAAEc,eAAelB,EAAED,EAAEE,QAAQF,EAAEG,WAAWiB,OAAO,EAAEpB,EAAEqB,SAAS,EAAErB,EAAEsB,SAAS,EAAEtB,EAAEuB,SAAS,EAAEvB,EAAEwB,SAAS,EAAExB,EAAEyB,UAAS,EAAGzB,EAAE0B,SAAQ,EAAG1B,EAAE2B,WAAU,EAAG3B,EAAE4B,UAAS,EAAG5B,EAAE6B,QAAQ,EAAE7B,EAAE8B,eAAe,MAAMzB,EAAGJ,EAAE8B,UAAUC,MAAMD,UAAUX,OAAOF,WAAWjB,EAA9Y,GFAiL,mBAAmBmB,OAAOa,cAAcjC,EAAE+B,UAAUX,OAAOY,MAAMD,UAAUX,OAAOa,YAAYjC,GGIhR,IAAIkC,EAAiBC,WAErB,SAASC,EAAQC,GACf,OAAOC,QAAQD,QAAyB,IAAbA,EAAEE,QAG/B,SAASC,KAaT,SAASC,EAAQC,GACf,KAAM9B,gBAAgB6B,GACpB,MAAM,IAAIE,UAAU,wCACtB,GAAkB,mBAAPD,EAAmB,MAAM,IAAIC,UAAU,kBAElD/B,KAAKgC,OAAS,EAEdhC,KAAKiC,UAAW,EAEhBjC,KAAKkC,YAASC,EAEdnC,KAAKoC,WAAa,GAElBC,EAAUP,EAAI9B,MAGhB,SAASsC,EAAOC,EAAMC,GACpB,KAAuB,IAAhBD,EAAKP,QACVO,EAAOA,EAAKL,OAEM,IAAhBK,EAAKP,QAITO,EAAKN,UAAW,EAChBJ,EAAQY,aAAa,WACnB,IAAIC,EAAqB,IAAhBH,EAAKP,OAAeQ,EAASG,YAAcH,EAASI,WAC7D,GAAW,OAAPF,EAAJ,CAIA,IAAIG,EACJ,IACEA,EAAMH,EAAGH,EAAKL,QACd,MAAO7C,GAEP,YADAgB,EAAOmC,EAASM,QAASzD,GAG3Bc,EAAQqC,EAASM,QAASD,QAVP,IAAhBN,EAAKP,OAAe7B,EAAUE,GAAQmC,EAASM,QAASP,EAAKL,WAPhEK,EAAKH,WAAWW,KAAKP,GAqBzB,SAASrC,EAAQoC,EAAMS,GACrB,IAEE,GAAIA,IAAaT,EACf,MAAM,IAAIR,UAAU,6CACtB,GACEiB,IACqB,iBAAbA,GAA6C,mBAAbA,GACxC,CACA,IAAI/C,EAAO+C,EAAS/C,KACpB,GAAI+C,aAAoBnB,EAItB,OAHAU,EAAKP,OAAS,EACdO,EAAKL,OAASc,OACdC,EAAOV,GAEF,GAAoB,mBAATtC,EAEhB,YADAoC,GApEMP,EAoES7B,EApELiD,EAoEWF,EAnEpB,WACLlB,EAAGqB,MAAMD,EAASE,aAkEkBb,GAIpCA,EAAKP,OAAS,EACdO,EAAKL,OAASc,EACdC,EAAOV,GACP,MAAOlD,GACPgB,EAAOkC,EAAMlD,GA5EjB,IAAcyC,EAAIoB,EAgFlB,SAAS7C,EAAOkC,EAAMS,GACpBT,EAAKP,OAAS,EACdO,EAAKL,OAASc,EACdC,EAAOV,GAGT,SAASU,EAAOV,GACM,IAAhBA,EAAKP,QAA2C,IAA3BO,EAAKH,WAAWT,QACvCE,EAAQY,aAAa,WACdF,EAAKN,UACRJ,EAAQwB,sBAAsBd,EAAKL,UAKzC,IAAK,IAAIoB,EAAI,EAAGC,EAAMhB,EAAKH,WAAWT,OAAQ2B,EAAIC,EAAKD,IACrDhB,EAAOC,EAAMA,EAAKH,WAAWkB,IAE/Bf,EAAKH,WAAa,KAMpB,SAASoB,EAAQb,EAAaC,EAAYE,GACxC9C,KAAK2C,YAAqC,mBAAhBA,EAA6BA,EAAc,KACrE3C,KAAK4C,WAAmC,mBAAfA,EAA4BA,EAAa,KAClE5C,KAAK8C,QAAUA,EASjB,SAAST,EAAUP,EAAIS,GACrB,IAAIkB,GAAO,EACX,IACE3B,EACE,SAAS5B,GACHuD,IACJA,GAAO,EACPtD,EAAQoC,EAAMrC,KAEhB,SAASE,GACHqD,IACJA,GAAO,EACPpD,EAAOkC,EAAMnC,MAGjB,MAAOsD,GACP,GAAID,EAAM,OACVA,GAAO,EACPpD,EAAOkC,EAAMmB,MAITvC,UAAiB,MAAI,SAASyB,GACpC,OAAO5C,KAAKC,KAAK,KAAM2C,MAGjBzB,UAAUlB,KAAO,SAAS0C,EAAaC,GAE7C,IAAIe,EAAO,IAAI3D,KAAKD,YAAY6B,GAGhC,OADAU,EAAOtC,KAAM,IAAIwD,EAAQb,EAAaC,EAAYe,IAC3CA,KAGDxC,UAAmB,QAAIyC,IAEvBC,IAAM,SAASC,GACrB,OAAO,IAAIjC,EAAQ,SAAS1B,EAASE,GACnC,IAAKmB,EAAQsC,GACX,OAAOzD,EAAO,IAAI0B,UAAU,iCAG9B,IAAIgC,EAAOC,MAAM7C,UAAU8C,MAAMC,KAAKJ,GACtC,GAAoB,IAAhBC,EAAKpC,OAAc,OAAOxB,EAAQ,IACtC,IAAIgE,EAAYJ,EAAKpC,OAErB,SAASyC,EAAId,EAAGe,GACd,IACE,GAAIA,IAAuB,iBAARA,GAAmC,mBAARA,GAAqB,CACjE,IAAIpE,EAAOoE,EAAIpE,KACf,GAAoB,mBAATA,EAQT,YAPAA,EAAKiE,KACHG,EACA,SAASA,GACPD,EAAId,EAAGe,IAEThE,GAKN0D,EAAKT,GAAKe,EACU,KAAdF,GACJhE,EAAQ4D,GAEV,MAAOL,GACPrD,EAAOqD,IAIX,IAAK,IAAIJ,EAAI,EAAGA,EAAIS,EAAKpC,OAAQ2B,IAC/Bc,EAAId,EAAGS,EAAKT,SAKVnD,QAAU,SAASD,GACzB,OAAIA,GAA0B,iBAAVA,GAAsBA,EAAMH,cAAgB8B,EACvD3B,EAGF,IAAI2B,EAAQ,SAAS1B,GAC1BA,EAAQD,QAIJG,OAAS,SAASH,GACxB,OAAO,IAAI2B,EAAQ,SAAS1B,EAASE,GACnCA,EAAOH,QAIHoE,KAAO,SAASR,GACtB,OAAO,IAAIjC,EAAQ,SAAS1B,EAASE,GACnC,IAAKmB,EAAQsC,GACX,OAAOzD,EAAO,IAAI0B,UAAU,kCAG9B,IAAK,IAAIuB,EAAI,EAAGC,EAAMO,EAAInC,OAAQ2B,EAAIC,EAAKD,IACzCzB,EAAQ1B,QAAQ2D,EAAIR,IAAIrD,KAAKE,EAASE,QAMpCoC,aAEmB,mBAAjB8B,aACN,SAASzC,GAEPyC,aAAazC,IAEjB,SAASA,GACPR,EAAeQ,EAAI,MAGfuB,sBAAwB,SAA+BmB,GACtC,oBAAZC,SAA2BA,SACpCA,QAAQC,KAAK,wCAAyCF,ICnP1D,IAAIG,EAAW,WAIb,GAAoB,oBAATpC,KACT,OAAOA,KAET,GAAsB,oBAAX/B,OACT,OAAOA,OAET,GAAsB,oBAAXoE,OACT,OAAOA,OAET,MAAM,IAAIC,MAAM,kCAbH,GCDf,SAASC,EAAWC,GAChB,MAAyB,mBAAXA,EAElB,SAASC,EAASD,GACd,MAAyB,iBAAXA,EAElB,SAASE,EAASF,GACd,MAAyB,iBAAXA,EAKlB,SAASG,EAAYH,GACjB,YAAyB,IAAXA,EAElB,SAASI,EAAOJ,GACZ,OAAkB,OAAXA,EAEX,SAASK,EAASL,GACd,OAAOA,aAAkBM,OAE7B,SAASC,EAAWP,GAChB,OAAOA,aAAkBQ,SAE7B,SAASC,EAAUT,GACf,OAAOA,aAAkBU,QAY7B,SAASC,EAAYX,GACjB,OAAID,EAAWC,KAAWK,EAASL,IAG5BE,EAASF,EAAOpD,QAE3B,SAASgE,EAAaZ,GAClB,MAAyB,iBAAXA,GAAkC,OAAXA,EAEzC,SAASa,EAAUb,GACf,OAAOO,EAAWP,GAAUA,EAAOc,gBAAkBd,EAMzD,SAASe,EAAYC,GACjB,OAAOA,EACFC,QAAQ,QAAS,OACjBA,QAAQ,qBAAcC,EAAGC,UAAWA,EAAOC,gBAMpD,SAASC,EAAYL,GACjB,OAAOA,EAAOC,QAAQ,kBAAWK,SAAa,IAAMA,EAASC,gBAOjE,SAASC,EAAsBC,EAASC,GACpC,OAAOjG,OAAOkG,iBAAiBF,GAASG,iBAAiBP,EAAYK,IAMzE,SAASG,EAAYJ,GACjB,MAAwD,eAAjDD,EAAsBC,EAAS,cAQ1C,SAASK,EAAcL,EAASM,EAAWC,GACvCC,IAAMC,EAAyB,UAAdH,EAAwB,CAAC,OAAQ,SAAW,CAAC,MAAO,UACrE,MAAO,CAAC,EAAG,GAAGI,gBAAQC,EAAMlB,EAAGmB,GAC3BC,IAAIC,EAAOP,EAAQE,EAASG,GAI5B,MAHc,WAAVL,IACAO,GAAQ,SAELH,EAAOI,WAAWhB,EAAsBC,EAASc,IAAS,MAClE,GAOP,SAASE,EAAShB,EAASC,GAEvB,GAAa,UAATA,GAA6B,WAATA,EASxB,OAAOF,EAAsBC,EAASC,GARlCO,IAAMS,EAAcjB,EAAQkB,wBAAwBjB,GACpD,OAAIG,EAAYJ,GACFiB,OAEJA,EACNZ,EAAcL,EAASC,EAAM,UAC7BI,EAAcL,EAASC,EAAM,gBASzC,SAASkB,EAAmB5C,EAAQ6C,GAChCZ,IAAMa,EAAanI,SAASoI,cAAcF,GAE1C,OADAC,EAAWE,UAAYhD,EAChB,GAAGd,MAAMC,KAAK2D,EAAWG,YAKpC,SAASC,IACL,OAAO,ED/GL,YAAatD,EAEPA,EAAS9C,QAAQV,UAAmB,UAC9CwD,EAAS9C,QAAQV,UAAmB,QAAIyC,GAFxCe,EAAkB,QAAI9C,ECmHxBmF,IAAMkB,EAAY,CACd,0BACA,cACA,cACA,WACA,aACA,aACA,WACA,aACA,gBACA,kBACA,UACA,aACA,eACA,aACA,UACA,QACA,UACA,SACA,SACA,QC3JJ,SAASC,EAAKpD,EAAQjF,GAClB,GAAI4F,EAAYX,IACZ,IAAKsC,IAAI/D,EAAI,EAAGA,EAAIyB,EAAOpD,OAAQ2B,GAAK,EACpC,IAA+C,IAA3CxD,EAASoE,KAAKa,EAAOzB,GAAIA,EAAGyB,EAAOzB,IACnC,OAAOyB,OAMf,IADAiC,IAAMoB,EAAOC,OAAOD,KAAKrD,GAChBzB,EAAI,EAAGA,EAAI8E,EAAKzG,OAAQ2B,GAAK,EAClC,IAAiE,IAA7DxD,EAASoE,KAAKa,EAAOqD,EAAK9E,IAAK8E,EAAK9E,GAAIyB,EAAOqD,EAAK9E,KACpD,OAAOyB,EAInB,OAAOA,ECZP,SADSuD,EACGxE,cAER,OADA9D,KAAK2B,OAAS,EACTmC,IAGLqE,EAAKrE,WAAMR,EAAGiF,GAEVvI,EAAKsD,GAAKiF,IAEdvI,KAAK2B,OAASmC,EAAInC,QACX3B,KCkDfgH,IA7DUwB,EA6DJA,IA7DIA,EAAI,SAAUC,GAChB,IAAKA,EACD,OAAO,IAAIH,EAGf,GAAIG,aAAoBH,EACpB,OAAOG,EAGX,GAAI3D,EAAW2D,GAQX,MAPI,8BAA8BC,KAAKhJ,SAASiJ,aAC5CjJ,SAASkJ,KACTH,EAASvE,KAAKxE,SAAU8I,GAGxB9I,SAASmJ,iBAAiB,qCAA0BJ,EAASvE,KAAKxE,SAAU8I,KAAI,GAE7E,IAAIF,EAAG,CAAC5I,WAGnB,GAAIsF,EAASyD,GAAW,CACpBzB,IAAM8B,EAAOL,EAASM,OAEtB,GAAgB,MAAZD,EAAK,IAAwC,MAA1BA,EAAKA,EAAKnH,OAAS,GAAY,CAClD0F,IAAI2B,EAAW,MAgBf,OAPAb,EARa,CACTc,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,MAAO,QACPC,OAAQ,mBAEAC,EAAUC,GAClB,GAAqC,IAAjCV,EAAKW,YAAYF,GAEjB,OADAP,EAAWQ,GACJ,IAIR,IAAIlB,EAAGX,EAAmBmB,EAAME,IAI3C,KADqC,MAAhBP,EAAS,KAAeA,EAASiB,MAAM,aAExD,OAAO,IAAIpB,EAAG5I,SAASiK,iBAAiBlB,IAE5CzB,IAAMR,EAAU9G,SAASkK,eAAenB,EAASxE,MAAM,IACvD,OAAIuC,EACO,IAAI8B,EAAG,CAAC9B,IAEZ,IAAI8B,EAEf,OAAI5C,EAAY+C,IAAqBA,aH1BhBoB,KG6Bd,IAAIvB,EAAG,CAACG,IAFJ,IAAIH,EAAGG,KAIpB3G,GAAKwG,EAAGnH,UACHqH,GC7DLsB,EAAYtB,EAAE9I,UACdqK,EAAUvB,EAAEhI,QACZwJ,EAAQxB,EAAE,QCEhBjH,6BAAiByI,EAAMC,SAAS,qBAE1BC,EAAO,CACX1B,EAAGA,GCGL,SAAS2B,EAASC,EAAWD,GACzB,OAAOC,IAAcD,GAAYvE,EAAUwE,GAAWD,SAASA,GCFnE,SAASE,EAAMC,EAAOC,GAIlB,OAHApC,EAAKoC,WAAStE,EAAG/F,GACboK,EAAMvH,KAAK7C,KAERoK,ECbX9B,EAAE1G,GAAGqG,KAAO,SAAUrI,GAClB,OAAOqI,EAAKnI,KAAMF,ICFtB0I,EAAE1G,GAAG0I,IAAM,SAAUpD,GACjB,YAAiBjF,IAAViF,EACD,GAAGnD,MAAMC,KAAKlE,MACdA,KAAc,GAAToH,EAAaA,EAAQA,EAAQpH,KAAK2B,SCCjD6G,EAAE1G,GAAG2I,KAAO,SAAUhC,GAClBzB,IAAM0D,EAAgB,GAItB,OAHA1K,KAAKmI,cAAMlC,EAAGO,GACV6D,EAAMK,EAAelC,EAAEhC,EAAQmD,iBAAiBlB,IAAW+B,SAExD,IAAIlC,EAAGoC,ICLlB1D,IAAM2D,EAAW,GAEbC,EAAgB,EAIpB,SAASC,EAAarE,GAClBQ,IAAM8D,EAAM,eAOZ,OALKtE,EAAQsE,KAETtE,EAAQsE,KAASF,GAGdpE,EAAQsE,GAKnB,SAASC,EAAMC,GACXhE,IAAMiE,EAAQD,EAAKE,MAAM,KACzB,MAAO,CACHF,KAAMC,EAAM,GACZE,GAAIF,EAAMhH,MAAM,GAAGmH,OAAOC,KAAK,MAMvC,SAASC,EAAWH,GAChB,OAAO,IAAII,OAAO,UAAYJ,EAAGnF,QAAQ,IAAK,SAAW,WA8F7D,SAASwF,EAAOhF,EAASiF,EAAOC,EAAMjD,YAE5BkD,EAAeC,UACVC,EAAkBD,EAAQE,IACjCtF,EAAQuF,oBAAoBH,EAAQZ,KAAMY,EAAQI,OAAO,GAH7DhF,IAAM6E,EAAoBlB,EAASE,EAAarE,KAAa,GAKxDiF,EAIDA,EAAMP,MAAM,KAAKe,iBAASjB,GA/FlC,IAAqBxE,EAAekF,EAAMjD,EAChCyD,EA+FMlB,IAhGKxE,EAiGOA,EAjGQkF,EAiGOA,EAjGDjD,EAiGOA,EAhGvCyD,EAAQnB,EAgGmBC,IA/FzBL,EAASE,EAAarE,KAAa,IAAI2F,gBAAQP,UAAYA,KAC7DM,EAAMlB,MAAQY,EAAQZ,OAASkB,EAAMlB,SACrCkB,EAAMf,IAAMG,EAAWY,EAAMf,IAAIzC,KAAKkD,EAAQT,QAC9CO,GAAQb,EAAae,EAAQF,QAAUb,EAAaa,OACpDjD,GAAYmD,EAAQnD,WAAaA,MA2FgBwD,iBAASL,UAAYD,EAAYC,OALpFC,EAAkBI,iBAASL,UAAYD,EAAYC,KCtI3D,SAASQ,EAAOrH,EAAQsH,gEASpB,OARAC,EAAQC,QAAQF,GAChBlE,EAAKmE,WAAUrG,EAAGuG,GACdrE,EAAKqE,WAASlF,EAAMpH,GACXgF,EAAYhF,KACb6E,EAAOuC,GAAQpH,OAIpB6E,ECoBX,SAAS0H,EAAMC,GACX,IAAK/G,EAAa+G,KAAS1I,MAAMxC,QAAQkL,GACrC,MAAO,GAEX1F,IAAMjD,EAAO,GACb,SAAS4I,EAAY7B,EAAK5K,GACtBmH,IAAIuF,EACAjH,EAAazF,GACbiI,EAAKjI,WAAQoD,EAAGuJ,GAERD,EADA5I,MAAMxC,QAAQtB,KAAWyF,EAAakH,GAC7B,GAGAvJ,EAEbqJ,EAAe7B,MAAO8B,MAAWC,MAKjCD,EADS,MAAT1M,GAA2B,KAAVA,EACR,IAGA,IAAI4M,mBAAmB5M,GAEpC6D,EAAKhB,KAAK+J,mBAAmBhC,GAAO8B,IAW5C,OARI5I,MAAMxC,QAAQkL,GACdvE,EAAKuE,EAAK,WACNC,EAAY3M,KAAKyG,KAAMzG,KAAKE,SAIhCiI,EAAKuE,EAAKC,GAEP5I,EAAKsH,KAAK,KChErB7C,EAAE1G,GAAGiL,QAAU,SAAU/B,EAAMgC,GAC3BhG,IACIiG,EADEf,EAAQnB,EAAMC,GAEdkC,EAAc,CAChB5N,SAAS,EACTC,YAAY,GAEV4N,GAAqF,EAAtE,CAAC,QAAS,YAAa,UAAW,aAAa1D,QAAQyC,EAAMlB,MAalF,OAVIiC,EAFAE,EAEc,IAAI7M,WAAW4L,EAAMlB,KAAMkC,IAGzCA,EAAY1N,OAASwN,EACP,IAAI3L,YAAY6K,EAAMlB,KAAMkC,KAGlCE,QAAUJ,EAEtBC,EAAYI,IAAMnB,EAAMf,GACjBnL,KAAKmI,KAAK,WACbnI,KAAKsN,cAAcL,MCvB3BjG,IAAMuG,EAAgB,GAEhBC,EAAa,CACfC,UAAW,kBACXC,YAAa,oBACbC,UAAW,kBACXC,aAAc,sBCIlB,SAASC,EAAkBC,GACvB,OAA0C,GAAnC,CAAC,MAAO,QAAQrE,QAAQqE,GAOnC,SAASC,GAAYC,EAAKC,GACtB,OAAUD,MAAOC,GAAQjI,QAAQ,YAAa,KClBlDwC,EAAE0F,KDyEF,SAAcC,GAEV9G,IAnDkB8G,EAEZC,EAyHEC,EAxEJC,GAAa,EAEXpB,EAAc,GAEdqB,GAvDYJ,EAuDiBA,EArD7BC,EAAW,CACbJ,IAAK,GACLF,OAAQ,MACRU,KAAM,GACNC,aAAa,EACbC,OAAO,EACPC,OAAO,EACPC,SAAU,GACVC,SAAU,GACVC,QAAS,GACTC,UAAW,GACXC,WAAY,GACZC,SAAU,OACVC,YAAa,oCACbC,QAAS,EACTvK,QAAQ,GAGZuD,EAAKoF,WAAgBzC,EAAK5K,GACJ,CACd,aACA,UACA,QACA,WACA,cAGUuJ,QAAQqB,GAAO,IAAM5F,EAAYhF,KAC3CkO,EAAStD,GAAO5K,KAGjBkM,EAAO,GAAIgC,EAAUD,IAuBxBH,EAAMO,EAAcP,KAAOxN,OAAO4O,SAASC,WACzCvB,EAASS,EAAcT,OAAO3H,cAChCqI,EAAOD,EAAcC,KACnBC,EAAcF,EAAcE,YAC5BC,EAAQH,EAAcG,MACtBC,EAAQJ,EAAcI,MACtBC,EAAWL,EAAcK,SACzBC,EAAWN,EAAcM,SACzBC,EAAUP,EAAcO,QACxBC,EAAYR,EAAcQ,UAC1BC,EAAaT,EAAcS,WAC3BC,EAAWV,EAAcU,SACzBC,EAAcX,EAAcW,YAC5BC,EAAUZ,EAAcY,QACxBvK,EAAS2J,EAAc3J,OAyB7B,SAASmI,EAAQb,EAAOoD,EAAQxP,WAMxByP,EACAC,uDALA5K,GACA4D,EAAE9I,UAAUqN,QAAQb,EAAOoD,GAK3BxP,IAEIA,KAAYyN,IAEZgC,EAAUhC,EAAczN,WAAaiE,IAGrCwK,EAAczO,KAEd0P,EAAUjB,EAAczO,WAAaiE,IAGxB,eAAbjE,IACa,IAAZyP,IAAiC,IAAZC,IACtBlB,GAAa,IAkJzB,OA9LIE,IACCX,EAAkBC,KAAWW,GAC7BzJ,EAASwJ,IACRA,aAAgBiB,aAChBjB,aAAgBkB,MAChBlB,aAAgBjJ,UAChBiJ,aAAgBmB,WAClBnB,EAAO/B,EAAM+B,IAGbA,GAAQX,EAAkBC,KAE1BE,EAAMD,GAAYC,EAAKQ,GACvBA,EAAO,MAsCA,IAAI3M,iBAAS1B,EAASE,GAErBwN,EAAkBC,KAAYa,IAC9BX,EAAMD,GAAYC,OAAU4B,KAAKC,QAGrC7I,IAiCI8I,EAjCEC,EAAM,IAAIC,eAChBD,EAAIE,KAAKnC,EAAQE,EAAKU,EAAOE,EAAUC,IACnCK,GACCV,IAASX,EAAkBC,KAA2B,IAAhBoB,IACvCa,EAAIG,iBAAiB,eAAgBhB,GAGxB,SAAbD,GACAc,EAAIG,iBAAiB,SAAU,qCAG/BpB,GACA3G,EAAK2G,WAAUhE,EAAK5K,GAEXgF,EAAYhF,IACb6P,EAAIG,iBAAiBpF,EAAK5K,EAAQ,MAK1B,yBAAyBwI,KAAKsF,IAC9CzC,OAAO4E,KAAO3P,OAAO4O,SAASgB,MAE9BL,EAAIG,iBAAiB,mBAAoB,kBAEzCnB,GACA5G,EAAK4G,WAAYjE,EAAK5K,GAElB6P,EAAIjF,GAAO5K,IAGnBgN,EAAY6C,IAAMA,EAClB7C,EAAYiB,QAAUI,EAEtBwB,EAAIM,OAAS,WACLP,GACAQ,aAAaR,GAGjB9I,IAGIuJ,EAHEC,EAAqC,KAAdT,EAAIU,QAAiBV,EAAIU,OAAS,KAC5C,MAAfV,EAAIU,QACW,IAAfV,EAAIU,OAER,GAAID,EAUA,GARInC,EADe,MAAf0B,EAAIU,QAA6B,SAAX3C,EACT,YAEO,MAAfiC,EAAIU,OACI,cAGA,UAEA,SAAbxB,EAAqB,CACrB,IACIsB,EACe,SAAXzC,OAAoB3L,EAAYuO,KAAK3F,MAAMgF,EAAIY,cACnDzD,EAAYsB,KAAO+B,EAEvB,MAAO/L,GAEHuI,EAAQS,EAAWG,UAAWT,EAAa,QAAS6C,EADpD1B,EAAa,eAEbhO,EAAO,IAAIwE,MAAMwJ,IAEF,gBAAfA,IACAtB,EAAQS,EAAWE,YAAaR,EAAa,UAAWqD,EAAclC,EAAY0B,GAClF5P,EAAQoQ,SAIZA,EACe,SAAXzC,OACM3L,EACqB,SAArB4N,EAAIa,cAAgD,KAArBb,EAAIa,aAC/Bb,EAAIY,aACJZ,EAAIc,SAClB3D,EAAYsB,KAAO+B,EACnBxD,EAAQS,EAAWE,YAAaR,EAAa,UAAWqD,EAAclC,EAAY0B,GAClF5P,EAAQoQ,QAKZxD,EAAQS,EAAWG,UAAWT,EAD9BmB,EAAa,QACuC0B,EAAK1B,GACzDhO,EAAO,IAAIwE,MAAMwJ,IAGrBlG,EAAK,CAACoF,EAAcyB,WAAYA,YAAc/I,EAAGyF,GACzCA,GAAQA,EAAKqE,EAAIU,UACbD,EACA9E,EAAKqE,EAAIU,QAAQF,EAAclC,EAAY0B,GAG3CrE,EAAKqE,EAAIU,QAAQV,EAAK1B,MAIlCtB,EAAQS,EAAWI,aAAcV,EAAa,WAAY6C,EAAK1B,IAEnE0B,EAAIe,QAAU,WACNhB,GACAQ,aAAaR,GAEjB/C,EAAQS,EAAWG,UAAWT,EAAa,QAAS6C,EAAKA,EAAIgB,YAC7DhE,EAAQS,EAAWI,aAAcV,EAAa,WAAY6C,EAAK,SAC/D1P,EAAO,IAAIwE,MAAMkL,EAAIgB,cAEzBhB,EAAIiB,QAAU,WACV3J,IAAI0J,EAAa,QACbjB,IACAiB,EAAa,UACbT,aAAaR,IAEjB/C,EAAQS,EAAWG,UAAWT,EAAa,QAAS6C,EAAKgB,GACzDhE,EAAQS,EAAWI,aAAcV,EAAa,WAAY6C,EAAKgB,GAC/D1Q,EAAO,IAAIwE,MAAMkM,KAGrBhE,EAAQS,EAAWC,UAAWP,EAAa,aAAc6C,GACrDzB,EACAjO,EAAO,IAAIwE,MAAM,YAIP,EAAVsK,IACAW,EAAavO,sBACTwO,EAAIkB,SACL9B,IAGPY,EAAImB,KAAK1C,OE5RrBhG,EAAE2I,UCWF,SAAmBhD,GACf,OAAO/B,EAAOmB,EAAeY,ICZjC3F,EAAE2B,SAAWA,ECFbnD,IAAMoK,GAAS,0BCQf,SAASC,GAAmB7K,EAASgG,GAE5BhG,EAAQ4K,MAET5K,EAAQ4K,IAAU,IAEtBjJ,EAAKqE,WAAS1B,EAAK5K,GAEfsG,EAAQ4K,IAAQtL,EAAYgF,IAAQ5K,IAG5C,SAASsO,GAAKhI,EAASsE,EAAK5K,SAGxB,OAAIyF,EAAamF,IACbuG,GAAmB7K,EAASsE,GACrBA,GAIN5F,EAAYhF,GAMbgF,EAAY4F,GAELtE,EAAQ4K,IAAU5K,EAAQ4K,IAAU,IAI/CtG,EAAMhF,EAAYgF,GAEdtE,EAAQ4K,KAAWtG,KAAOtE,EAAQ4K,IAE3B5K,EAAQ4K,IAAQtG,QAF3B,IAbIuG,GAAmB7K,MAAS,IAAGsE,GAAM5K,MAC9BA,GC7Bf,SAASoR,GAAIC,EAAUzR,SACfI,EACE2C,EAAM,GAOZ,OANAsF,EAAKoJ,WAAWjO,EAAGkD,GAEF,OADbtG,EAAQJ,EAASoE,KAAK1D,OAAQgG,EAASlD,KAEnCT,EAAIE,KAAK7C,QAGV,IAAGsR,eAAU3O,GCuBxB,SAAS4O,GAAWjL,EAASC,GAEzB,GAAKD,EAAQ4K,IAAb,CAGApK,IAAMwE,WAAUkG,GACZA,EAAW5L,EAAY4L,GAEnBlL,EAAQ4K,IAAQM,KAEhBlL,EAAQ4K,IAAQM,GAAY,YAErBlL,EAAQ4K,IAAQM,KAG3BxM,EAAYuB,IAEZD,EAAQ4K,IAAU,YAEX5K,EAAQ4K,KAGVpM,EAASyB,GACdA,EACKyE,MAAM,KACNiB,gBAAQuF,UAAaA,IACrBzF,iBAASyF,UAAalG,EAAOkG,KAGlCvJ,EAAK1B,WAAOR,EAAGyL,UAAalG,EAAOkG,MCpD3C,SAASC,GAAO7N,GACZkD,IAAM4K,EAAS,GAMf,OALAzJ,EAAKrE,WAAMmC,EAAG5B,IACmB,IAAzBuN,EAAOnI,QAAQpF,IACfuN,EAAO7O,KAAKsB,KAGbuN,ECXI,SAASC,GAAIC,EAAWC,EAAWC,EAAMvJ,EAAU0D,GAC9DnF,IACIjC,EADElC,EAAM,GAgCZ,OA9BAiP,EAAU3J,cAAMlC,EAAGO,GAGf,IAFAzB,EAASyB,EAAQwL,GAEVjN,GAAUS,EAAUT,IAAS,CAEhC,GAAkB,IAAdgN,EAAiB,CACjB,GAAItJ,GAAYD,EAAEzD,GAAQkN,GAAGxJ,GACzB,MAEC0D,IAAU3D,EAAEzD,GAAQkN,GAAG9F,IACxBtJ,EAAIE,KAAKgC,OAIZ,CAAA,GAAkB,IAAdgN,EAAiB,CACjBtJ,IAAYD,EAAEzD,GAAQkN,GAAGxJ,IAC1B5F,EAAIE,KAAKgC,GAEb,MAIK0D,IAAYD,EAAEzD,GAAQkN,GAAGxJ,IAC1B5F,EAAIE,KAAKgC,GAIjBA,EAASA,EAAOiN,MAGjB,IAAI1J,EAAGqJ,GAAO9O,ICrCzB2F,EAAEgG,KAAOA,GCAThG,EAAEL,KAAOA,ECCTK,EAAE4D,OAAS,yEACP,OAAuB,IAAnBE,EAAQ3K,QACRwG,EAAKmE,EAAQ,YAAKhF,EAAMpH,GACpBF,EAAKsH,GAAQpH,IAEVF,MAEJoM,gBAAOE,EAAQ4F,QAAS5F,EAAQ4F,gBAAY5F,KCRvD9D,EAAE8I,IAAMA,GCAR9I,EAAE6B,MAAQA,ECAV7B,EAAEiE,MAAQA,ECAVjE,EAAEiJ,WAAaA,GCAfjJ,EAAEmJ,OAASA,GCGXnJ,EAAE1G,GAAGqQ,IAAM,SAAU1J,GACjB,OAAO,IAAIH,EAAGqJ,GAAOtH,EAAMrK,KAAKwK,MAAOhC,EAAEC,GAAU+B,UCFvDrC,EAAK,CAAC,MAAO,SAAU,mBAAYlC,EAAGQ,GAClC+B,EAAE1G,GAAM2E,WAAe,SAAU2L,GAC7B,MAAa,WAAT3L,GAAsBrD,UAAUzB,OAK7B3B,KAAKmI,cAAM7E,EAAGkD,GACZhB,EAAUgB,IAQf2B,GALiBrD,EAAWsN,GACtBA,EAAUlO,KAAKsC,EAASlD,EAAGkD,EAAQ6L,aAAa,UAAY,IAC5DD,GACDlH,MAAM,KACNiB,gBAAQ1F,UAASA,aACPR,EAAGqM,GACd9L,EAAQ+L,UAAU9L,GAAM6L,OAdrBtS,KAAKmI,cAAMlC,EAAGO,GACjBA,EAAQgM,aAAa,QAAS,SCL9CrK,EAAK,CAAC,eAAgB,wBAAiB4J,EAAWtL,GAC9C+B,EAAE1G,GAAG2E,GAAQ,SAAU1B,GACnBiC,IAAMyL,EAAWV,EAAYvJ,EAAExI,KAAKwK,MAAMkI,WAAa1S,KACjD2S,EAAUnK,EAAEzD,GACZ6M,EAAS,GAcf,OAbAe,EAAQxK,cAAMf,EAAOrC,GACZA,EAAO6N,YAGZH,EAAStK,cAAMlC,EAAGO,GACdQ,IAAM6L,EAAUzL,EACVZ,EAAQsM,WAAU,GAClBtM,EACAuM,EAAehB,EAAYhN,EAAOiO,YAAcjO,EACtD6M,EAAO7O,KAAK8P,GACZ9N,EAAO6N,WAAWK,aAAaJ,EAASE,OAGzCvK,EAAEuJ,EAAYH,EAAOc,UAAYd,MCRhDzJ,EAAK,CAAC,SAAU,kBAAW4J,EAAWtL,GAClC+B,EAAE1G,GAAG2E,GAAQ,kEAKT,OAHkB,IAAdsL,IACAhO,EAAOA,EAAK2O,WAET1S,KAAKmI,cAAMf,EAAOZ,GAIrB2B,EAHgBrD,EAAWf,EAAK,IAC1B,CAACA,EAAK,GAAGG,KAAKsC,EAASY,EAAOZ,EAAQuB,YACtChE,WACSkC,EAAGlB,GACdsC,IAdKtC,IACTC,EADSD,EAeWA,IAde,MAAdA,EAAO,IAA4C,MAA9BA,EAAOA,EAAOpD,OAAS,GAiBpDyF,GAAS5B,EAAUT,GACdyD,EAAEzD,EAAO+N,WAAU,IAGnBtK,EAAEzD,GANFyD,EAAEb,EAAmB5C,EAAQ,SAQnCgN,EAAY,cAAgB,gBAAgBvL,UC7BpEgC,EAAE1G,GAAGoR,IAAM,SAAUzH,EAAOhD,EAAU3I,cAElC,OAAI6F,EAAa8F,IACbtD,EAAKsD,WAAQT,EAAMlJ,GAGf9B,EAAKkT,IAAIlI,EAAMvC,EAAU3G,KAEtB9B,QAGM,IAAbyI,IAAsB3D,EAAW2D,KACjC3I,EAAW2I,EACXA,OAAWtG,IAIE,IAAbrC,IACAA,EAAWmI,GAERjI,KAAKmI,KAAK,WACbqD,EAAOxL,KAAMyL,EAAO3L,EAAU2I,OCpBtCD,EAAE1G,GAAGqR,GAAK,SAAU1H,EAAOhD,EAAU+F,EAAM1O,EAAUsT,cAEjD,GAAIzN,EAAa8F,GAYb,OAVKzG,EAASyD,KAEV+F,EAAOA,GAAQ/F,EACfA,OAAWtG,GAEfgG,EAAKsD,WAAQT,EAAMlJ,GAGf9B,EAAKmT,GAAGnI,EAAMvC,EAAU+F,EAAM1M,EAAIsR,KAE/BpT,KAoBX,GAlBY,MAARwO,GAA4B,MAAZ1O,GAEhBA,EAAW2I,EACX+F,EAAO/F,OAAWtG,GAED,MAAZrC,IACDkF,EAASyD,IAET3I,EAAW0O,EACXA,OAAOrM,IAIPrC,EAAW0O,EACXA,EAAO/F,EACPA,OAAWtG,KAGF,IAAbrC,EACAA,EAAWmI,OAEV,IAAKnI,EACN,OAAOE,KAGX,GAAIoT,EAAK,CAELpM,IAAMqM,EAAQrT,KACRsT,EAAexT,EACrBA,EAAW,SAAUoM,GAGjB,OAFAmH,EAAMH,IAAIhH,EAAMlB,KAAMvC,EAAU3I,GAEzBwT,EAAanQ,MAAMnD,KAAMoD,YAGxC,OAAOpD,KAAKmI,KAAK,Y7BGrB,SAAa3B,EAASiF,EAAOC,EAAM8C,EAAM/F,GACrCzB,IAAMuM,EAAY1I,EAAarE,GAC1BmE,EAAS4I,KACV5I,EAAS4I,GAAa,IAG1BlM,IAAImM,GAAa,EACb7N,EAAa6I,IAASA,EAAKgF,aAC3BA,GAAa,GAEjB/H,EAAMP,MAAM,KAAKe,iBAASjB,GACtB,GAAKA,EAAL,CAGAhE,IAAMkF,EAAQnB,EAAMC,GAoCdY,EAAU,CACZZ,KAAMkB,EAAMlB,KACZG,GAAIe,EAAMf,QACVO,WACAjD,EACAqD,GAAInB,EAAS4I,GAAW5R,OACxBqK,MAAOyH,GAEX9I,EAAS4I,GAAWxQ,KAAK6I,GACzBpF,EAAQqC,iBAAiB+C,EAAQZ,KAAMyI,EAASD,GA5ChD,SAASE,EAAOrU,EAAGsU,IAKA,IAHAjI,EAAKvI,MAAMwQ,OAEZxR,IAAd9C,EAAE+N,QAAwB,CAAC/N,GAAK,CAACA,GAAGmS,OAAOnS,EAAE+N,YAEzC/N,EAAEuU,iBACFvU,EAAEwU,mBAGV,SAASJ,EAAQpU,GAETA,EAAEgO,MAAQ/B,EAAWjM,EAAEgO,KAAK3E,KAAKwD,EAAMf,MAI3C9L,EAAEyU,MAAQtF,EACN/F,EAEAD,EAAEhC,GACGiE,KAAKhC,GACL+B,MACAkI,UACAzG,iBAAS0H,GACNA,IAAStU,EAAE0F,SACXoF,EAASwJ,EAAMtU,EAAE0F,SACjB2O,EAAOrU,EAAGsU,KAMlBD,EAAOrU,EAAGmH,O6BjDlB2L,CAAInS,KAAMyL,EAAO3L,EAAU0O,EAAM/F,MCtDzCN,EAAKqF,WAAa/G,EAAMsN,GACpBvL,EAAE1G,GAAG2E,GAAQ,SAAU3E,GACnB,OAAO9B,KAAKmT,GAAGY,WAAY1U,EAAGiQ,GAC1BxN,EAAGzC,EAAGiQ,EAAOS,IAAKT,EAAOnB,QAASmB,EAAOd,WCJrDhG,EAAE1G,GAAGwP,IAAM,SAAUxR,GACjB,OAAO,IAAIwI,EAAGgJ,GAAItR,cAAOwG,EAASlD,UAAMxD,EAASoE,KAAKsC,EAASlD,EAAGkD,OCFtEgC,EAAE1G,GAAGkS,MAAQ,WACT,OAAOhU,KAAKsR,IAAI,WACZ,OAAOtR,KAAK8S,WAAU,MCD9BtK,EAAE1G,GAAGmQ,GAAK,SAAUxJ,GAChBpB,IAAI4M,GAAY,EAChB,GAAInP,EAAW2D,GAMX,OALAzI,KAAKmI,cAAMf,EAAOZ,GACViC,EAASvE,KAAKsC,EAASY,EAAOZ,KAC9ByN,GAAY,KAGbA,EAEX,GAAIjP,EAASyD,GAWT,OAVAzI,KAAKmI,cAAMlC,EAAGO,GACNlB,EAAWkB,IAAYpB,EAASoB,KAIpBA,EAAQ0N,SAAW1N,EAAQ2N,mBAC/BjQ,KAAKsC,EAASiC,KACtBwL,GAAY,KAGbA,EAEXjN,IAAMoN,EAAe5L,EAAEC,GAQvB,OAPAzI,KAAKmI,cAAMlC,EAAGO,GACV4N,EAAajM,cAAMlC,EAAGoO,GACd7N,IAAY6N,IACZJ,GAAY,OAIjBA,GC/BXzL,EAAE1G,GAAG0J,OAAS,SAAU/C,GACpB,OAAOzI,KAAKmI,cAAMlC,EAAGO,IACbA,EAAQoM,YAAgBnK,IAAYD,EAAEhC,GAASyL,GAAGxJ,IAClDjC,EAAQoM,WAAW0B,YAAY9N,MCG3C2B,EAAK,CAAC,UAAW,mBAAY4J,EAAWtL,GACpC+B,EAAE1G,GAAG2E,GAAQ,kEACT,OAAOzG,KAAKmI,cAAMf,EAAOZ,SACfwB,EAAaxB,EAAQwB,WACrBuM,EAAcvM,EAAWrG,OACzB6S,EAAQD,EACRvM,EAAW+J,EAAYwC,EAAc,EAAI,GACzC7U,SAASoI,cAAc,OACxByM,GACD/N,EAAQiO,YAAYD,GAExBnN,IAAIqN,EAAW5P,EAAWf,EAAK,IACzB,CAACA,EAAK,GAAGG,KAAKsC,EAASY,EAAOZ,EAAQuB,YACtChE,EAEFqD,IACAsN,EAAWA,EAASpD,aAAKqD,GACrB,OAAO3P,EAAS2P,GAAWA,EAAUnM,EAAEmM,GAASX,cAGxDxL,EAAEgM,IAAOzC,EAAY,QAAU,kBAAa2C,GACvCH,GACD/N,EAAQ8N,YAAYE,QCzBpCrM,EAAK,CAAC,WAAY,sBAAe4J,EAAWtL,GACxC+B,EAAE1G,GAAG2E,GAAQ,SAAU1B,GACnBiC,IAAM4N,EAAc,GACdjC,EAAUnK,EAAEzD,GAAQuM,aAAKrL,EAAGO,GAC9BQ,IAAMgB,EAAaxB,EAAQwB,WACrBuM,EAAcvM,EAAWrG,OAC/B,GAAI4S,EACA,OAAOvM,EAAW+J,EAAY,EAAIwC,EAAc,GAEpDvN,IAAMwN,EAAQ9U,SAASoI,cAAc,OAGrC,OAFAtB,EAAQiO,YAAYD,GACpBI,EAAY7R,KAAKyR,GACVA,IAELK,EAAU7U,KAAK+R,EAAY,eAAiB,eAAeY,GAEjE,OADAnK,EAAEoM,GAAapJ,SACRqJ,KClBf1M,EAAK,CAAC,OAAQ,OAAQ,gBAAS4J,EAAWtL,GA+BtC,SAAS+D,EAAIhE,EAASsE,GAClB,OAAQiH,GAEJ,KAAK,EAED/K,IAAM9G,EAAQsG,EAAQ6L,aAAavH,GACnC,OAAO3F,EAAOjF,QAASiC,EAAYjC,EAEvC,KAAK,EAED,OAAOsG,EAAQsE,GAEnB,QACI,OAAOtD,EAAShB,EAASsE,IAGrCtC,EAAE1G,GAAG2E,GAAQ,SAAUqE,EAAK5K,cACxB,GAAIyF,EAAamF,GAKb,OAJA3C,EAAK2C,WAAMgK,EAAGjI,GAEV7M,EAAKyG,GAAMqO,EAAGjI,KAEX7M,KAEX,GAAyB,IAArBoD,UAAUzB,OAId,OAAO3B,KAAKmI,cAAM7E,EAAGkD,IA1DzB,SAAaA,EAASsE,EAAK5K,GAEvB,IAAIgF,EAAYhF,GAGhB,OAAQ6R,GAEJ,KAAK,EACG5M,EAAOjF,GACPsG,EAAQuO,gBAAgBjK,GAGxBtE,EAAQgM,aAAa1H,EAAK5K,GAE9B,MAEJ,KAAK,EAEDsG,EAAQsE,GAAO5K,EACf,MAEJ,QACI4K,EAAMhF,EAAYgF,GAElBtE,EAAQwO,MAAMlK,GAAO7F,EAAS/E,GACrBA,IAAkC,EAA1BgI,EAAUuB,QAAQqB,GAAY,GAAK,MAC9C5K,GAiCV+U,CAAIzO,EAASsE,EAAKhG,EAAW5E,GAASA,EAAMgE,KAAKsC,EAASlD,EAAGkH,EAAIhE,EAASsE,IAAQ5K,KAJlF8G,IAAMR,EAAUxG,KAAK,GACrB,OAAOwF,EAAUgB,GAAWgE,EAAIhE,EAASsE,QAAO3I,KCtD5DqG,EAAE1G,GAAGoT,SAAW,SAAUzM,GACtBzB,IAAMkO,EAAW,GAWjB,OAVAlV,KAAKmI,cAAMlC,EAAGO,GACV2B,EAAK3B,EAAQwB,oBAAamN,EAAIC,GACrB5P,EAAU4P,KAGV3M,IAAYD,EAAE4M,GAAWnD,GAAGxJ,IAC7ByM,EAASnS,KAAKqS,QAInB,IAAI9M,EAAGqJ,GAAOuD,KCjBzB1M,EAAE1G,GAAGmC,MAAQ,kEACT,OAAO,IAAIqE,EAAG,GAAGrE,MAAMd,MAAMnD,KAAM+D,KCAvCyE,EAAE1G,GAAGuT,GAAK,SAAUjO,GAChBJ,IAAMnE,GAAiB,IAAXuE,EAAepH,KAAKiE,MAAMmD,GAASpH,KAAKiE,MAAMmD,GAAQA,EAAQ,GAC1E,OAAO,IAAIkB,EAAGzF,ICDlBsF,EAAK,CAAC,GAAI,IAAK,mBAAY4J,EAAWtL,GAClC+B,EAAE1G,YAAY2E,GAAU,SAAUgC,EAAU0D,GAGxC,OAAO0F,GADSE,EAAmBvJ,EAAExI,KAAKwK,MAAMkI,WAApB1S,KACT+R,EAAW,aAActJ,EAAU0D,MCH9D3D,EAAE1G,GAAGwT,QAAU,SAAU7M,GACrB,GAAIzI,KAAKiS,GAAGxJ,GACR,OAAOzI,KAEXgH,IAAMuO,EAAU,GAOhB,OANAvV,KAAKwV,UAAUrN,cAAMlC,EAAGO,GACpB,GAAIgC,EAAEhC,GAASyL,GAAGxJ,GAEd,OADA8M,EAAQxS,KAAKyD,IACN,IAGR,IAAI8B,EAAGiN,ICZlBvO,IAAMyO,GAAS,+BAqBf,SAASC,GAASlP,EAASsE,EAAK5K,GAC5B,GAAIgF,EAAYhF,IAA+B,IAArBsG,EAAQmP,SAAgB,CAC9C3O,IAAMP,EAAO,QAAUL,EAAY0E,GAEnC,GAAI9F,EADJ9E,EAAQsG,EAAQ6L,aAAa5L,IAEzB,IACIvG,EAxBE,UADDA,EAyBeA,IArBd,UAAVA,IAGU,SAAVA,EACO,KAEPA,KAAWA,EAAQ,IACXA,EAERuV,GAAO/M,KAAKxI,GACLwQ,KAAK3F,MAAM7K,GAEfA,GAWC,MAAOb,SAGPa,OAAQiC,EA9BpB,IAAiBjC,EAiCb,OAAOA,ECzBX,SAAS0V,GAAiBpP,EAASC,EAAMvG,EAAO2V,EAAWC,EAAeC,YAEhEC,EAAsBjP,GACxB,OAAQF,EAAcL,EAASC,EAAKH,cAAeS,GAC/CgP,EA6BR,OA3BkB,IAAdF,GAAmBC,IACnB5V,GAAS8V,EAAmB,WAE5BpP,EAAYJ,IvDePhG,OAAOd,SAASuW,cuDZM,IAAbF,IACV7V,GAAS8V,EAAmB,UAC5B9V,GAAS8V,EAAmB,YAEd,IAAdH,IACA3V,GAAS8V,EAAmB,WAEd,IAAdH,IACA3V,GAAS8V,EAAmB,UAC5B9V,GAAS8V,EAAmB,cAId,IAAdH,IACA3V,GAAS8V,EAAmB,YAEd,IAAdH,IACA3V,GAAS8V,EAAmB,UAC5B9V,GAAS8V,EAAmB,aAG7B9V,EASX,SAASsK,GAAIhE,EAASC,EAAMoP,EAAWC,GACnC9O,IAAMkP,EAAa,SAASzP,EACtB0P,EAAa,SAAS1P,EACtB2P,EAAa,SAAS3P,EACtB4P,EAAY,QAAQ5P,EAE1B,GAAIrB,EAASoB,GAET,OAAqB,IAAdqP,EACDrP,EAAQ6P,GACRzQ,EAAUlG,UAAUwW,GAG9B,GAAI5Q,EAAWkB,GAAU,CACrBQ,IAAMsP,EAAM1Q,EAAUY,GACtB,OAAO+P,KAAKC,IAEZhQ,EAAQoC,KAAKuN,GAAaG,EAAIH,GAE9B3P,EAAQoC,KAAKwN,GAAaE,EAAIF,GAAaE,EAAIJ,IAEnDlP,IAAM9G,EAAQqH,WAAWhB,EAAsBC,EAASC,EAAKH,gBAAkB,KAC/E,OAAOsP,GAAiBpP,EAASC,EAAMvG,EAAO2V,EAAWC,EAAe,GCzE5E,SAASW,GAAWhE,EAAUhM,GAC1B,OAAOc,WAAWkL,EAASiE,IAAIjQ,ICAnC,SAAS+D,GAAIhE,GACT,IAAKA,EAAQmQ,iBAAiBhV,OAC1B,MAAO,CAAEiV,IAAK,EAAGC,KAAM,GAE3B7P,IAAM8P,EAAOtQ,EAAQkB,wBACfqP,EAAMvQ,EAAQwQ,cAAcC,YAClC,MAAO,CACHL,IAAKE,EAAKF,IAAMG,EAAIG,YACpBL,KAAMC,EAAKD,KAAOE,EAAII,aH2B9B3O,EAAE1G,GAAG0M,KAAO,SAAU1D,EAAK5K,GAEvB,GAAIgF,EAAY4F,GAAM,CAClB,IAAK9K,KAAK2B,OACN,OAEJqF,IAAMR,EAAUxG,KAAK,GACfoX,EAAa5I,GAAKhI,GAExB,GAAyB,IAArBA,EAAQmP,SACR,OAAOyB,EAKX,IAFApQ,IAAMqQ,EAAQ7Q,EAAQ8Q,WAClBhU,EAAI+T,EAAM1V,OACP2B,KACH,GAAI+T,EAAM/T,GAAI,CACV+D,IAAIZ,EAAO4Q,EAAM/T,GAAGmD,KACU,IAA1BA,EAAKgD,QAAQ,WAEb2N,EADA3Q,EAAOX,EAAYW,EAAKxC,MAAM,KACXyR,GAASlP,EAASC,EAAM2Q,EAAW3Q,KAIlE,OAAO2Q,EAGX,OAAIzR,EAAamF,GACN9K,KAAKmI,KAAK,WACbqG,GAAKxO,KAAM8K,KAIM,IAArB1H,UAAUzB,QAAgBuD,EAAYhF,GAC/BF,KAGNkF,EAAYhF,GAMZF,KAAK2B,OAGH+T,GAAS1V,KAAK,GAAI8K,EAAK0D,GAAKxO,KAAK,GAAI8K,SAH5C,EALW9K,KAAKmI,KAAK,WACbqG,GAAKxO,KAAM8K,EAAK5K,MI9E5BsI,EAAE1G,GAAGyV,MAAQ,WACT,OAAOvX,KAAKmI,KAAK,WACbnI,KAAK+H,UAAY,MCFzBS,EAAE1G,GAAGsK,OAAS,SAAUM,GAKpB,OAJAvE,EAAKuE,WAAMpF,EAAMpH,GAEbsI,EAAE1G,GAAGwF,GAAQpH,IAEVF,MCHXwI,EAAE1G,GAAGqK,OAAS,SAAU1D,GACpB,GAAI3D,EAAW2D,GACX,OAAOzI,KAAKsR,aAAKlK,EAAOZ,UAAYiC,EAASvE,KAAKsC,EAASY,EAAOZ,GAAWA,OAAUrE,IAE3F,GAAI6C,EAASyD,GACT,OAAOzI,KAAKsR,aAAKrL,EAAGO,UAAYgC,EAAEhC,GAASyL,GAAGxJ,GAAYjC,OAAUrE,IAExE6E,IAAMwQ,EAAYhP,EAAEC,GACpB,OAAOzI,KAAKsR,aAAKrL,EAAGO,UAAgD,EAApCgR,EAAUhN,MAAMf,QAAQjD,GAAgBA,OAAUrE,KCVtFqG,EAAE1G,GAAGwI,MAAQ,WACT,OAAOtK,KAAKqV,GAAG,ICCnB7M,EAAE1G,GAAG2V,IAAM,SAAUhP,GACjBzB,IAAM0Q,EAAW1S,EAASyD,GAAYzI,KAAKyK,KAAKhC,GAAYD,EAAEC,cAE9D,OAAOzI,KAAKsR,IAAI,WACZ,IAAKjK,IAAI/D,EAAI,EAAGA,EAAI3B,EAAQ2B,GAAK,EAC7B,GAAI6G,EAASnK,KAAM0X,EAASpU,IACxB,OAAOtD,QCTvBwI,EAAE1G,GAAG6V,SAAW,SAAUvF,GACtB,OAAOpS,KAAK,GAAGuS,UAAUpI,SAASiI,IR6GtCjK,EAAK,CAAC,QAAS,mBAAYlC,EAAGQ,GAC1B0B,EAAK,SAAS1B,EAAQA,EAAKH,sBAAuBG,YAAUoP,EAAW+B,GACnEpP,EAAE1G,GAAG8V,GAAY,SAAUC,EAAQ3X,GAE/B8G,IAAM8Q,EAAQ1U,UAAUzB,SAAWkU,EAAY,KvDtG9B,kBuDsG8CgC,IACzD/B,GAA2B,IAAX+B,IAA6B,IAAV3X,EAEzC,OAAK4X,EAME9X,KAAKmI,cAAMf,EAAOZ,UAnCrC,SAAaA,EAASuR,EAActR,EAAMoP,EAAWC,EAAe5V,GAChEmH,IAAI2Q,EAAgBlT,EAAW5E,GACzBA,EAAMgE,KAAKsC,EAASuR,EAAcvN,GAAIhE,EAASC,EAAMoP,EAAWC,IAChE5V,EACN,GAAqB,MAAjB8X,EAAJ,CAGAhR,IAAMyL,EAAWjK,EAAEhC,GACbyR,EAAYxR,EAAKH,cAEvB,IAAsD,EAAlD,CAAC,OAAQ,UAAW,IAAImD,QAAQuO,GAChCvF,EAASiE,IAAIuB,EAAWD,OAD5B,CAKAhR,IAAMkR,EAASF,EAAc3I,WAAWrJ,QAAQ,YAAa,IAE7DgS,EACIpC,GAAiBpP,EAASC,EAFZc,WAAWyQ,GAEkBnC,EAAWC,GAAgB,IACjEoC,GAAU,MACnBzF,EAASiE,IAAIuB,EAAWD,KAeqB/C,CAAIzO,EAASY,EAAOX,EAAMoP,EAAWC,EAAe+B,KAL9E7X,KAAK2B,OACN6I,GAAIxK,KAAK,GAAIyG,EAAMoP,EAAWC,QAC9B3T,OSvHtBqG,EAAE1G,GAAGqW,KAAO,WACR,OAAOnY,KAAKmI,KAAK,WACbnI,KAAKgV,MAAMoD,QAAU,UCE7BjQ,EAAK,CAAC,MAAO,OAAQ,iBAAU4J,EAAWtL,GACtCO,IAKMqR,EALQ,CACVC,EAAG,QACHC,EAAG,YACHC,EAAG,eAEgBzG,GACvB,SAASvH,EAAIsH,GAET,GAAkB,IAAdC,EAEA,OAAOT,GAAIQ,WAAYtL,UAAYZ,EAAUY,GAAS6R,KAAWhN,KAAK,IAG1E,GAAKyG,EAAUnQ,OAAf,CAIAqF,IAAMyR,EAAe3G,EAAU,GAE/B,OAAkB,IAAdC,GAAmBvJ,EAAEiQ,GAAcxG,GAAG,oBAC/BX,GAAI9I,EAAEiQ,GAAchO,KAAK,2BAAoBjE,UAAYA,EAAQtG,QAGrEuY,EAAaJ,IAiBxB7P,EAAE1G,GAAG2E,GAAQ,SAAUvG,GAEnB,OAAKkD,UAAUzB,OAIR3B,KAAKmI,cAAM7E,EAAGkD,GACjBQ,IAAMgR,EAAgBlT,EAAW5E,GAC3BA,EAAMgE,KAAKsC,EAASlD,EAAGkH,EAAIhC,EAAEhC,KAC7BtG,EAEY,IAAd6R,GAAmB/N,MAAMxC,QAAQwW,GAE7BxP,EAAEhC,GAASyL,GAAG,oBACdX,GAAI9I,EAAEhC,GAASiE,KAAK,mBAAYnB,UAAYA,EAAOoP,UAE1C,EADLV,EAAcvO,QAAQH,EAAOpJ,SAKjCsG,EAAQmS,SACoC,EAAxCX,EAAcvO,QAAQjD,EAAQtG,OApClD,SAAasG,EAAStG,GAGlB,GAAIgF,EAAYhF,GAAQ,CACpB,GAAkB,IAAd6R,EACA,OAEJ7R,EAAQ,GAEM,IAAd6R,GAAmBvM,EAAUtF,KAC7BA,EAAQA,EAAM0Y,WAGlBpS,EAAQ6R,GAAYnY,EA2BZ+U,CAAIzO,EAASwR,KAtBVxN,EAAIxK,SC5CvBwI,EAAE1G,GAAGsF,MAAQ,SAAUqB,GACnB,OAAKrF,UAAUzB,OAGXqD,EAASyD,GACFD,EAAEC,GAAU+B,MAAMf,QAAQzJ,KAAK,IAEnCA,KAAKwK,MAAMf,QAAQjB,EAAEC,GAAU,IAL3BzI,KAAKqV,GAAG,GAAGzN,SAASsN,WAAW1K,MAAMf,QAAQzJ,KAAK,KCNjEwI,EAAE1G,GAAG+W,KAAO,WACR,OAAO7Y,KAAKqV,IAAI,ICApBlN,EAAK,CAAC,GAAI,MAAO,kBAAW4J,EAAWtL,GACnC+B,EAAE1G,UAAU2E,GAAU,SAAUgC,EAAU0D,GACtC,OAAO0F,GAAI7R,KAAM+R,EAAW,qBAAsBtJ,EAAU0D,MCFpE3D,EAAE1G,GAAGgX,IAAM,SAAUrQ,GACjBzB,IAAM+R,EAAY/Y,KAAKmM,OAAO1D,GAC9B,OAAOzI,KAAKsR,aAAKrL,EAAGO,UAAwC,EAA5BuS,EAAU3R,MAAMZ,QAAgBrE,EAAYqE,KCChFgC,EAAE1G,GAAGkX,aAAe,WAChB,OAAOhZ,KAAKsR,IAAI,WAEZ,IADAjK,IAAI2R,EAAehZ,KAAKgZ,aACjBA,GAAoD,WAApCxQ,EAAEwQ,GAActC,IAAI,aACvCsC,EAAeA,EAAaA,aAEhC,OAAOA,GAAgBtZ,SAASmG,mBdJxC2C,EAAE1G,GAAGmF,SAAW,WACZ,GAAKjH,KAAK2B,OAAV,CAGAqF,IACIiS,EADExG,EAAWzS,KAAKqV,GAAG,GAErB6D,EAAe,CACfrC,KAAM,EACND,IAAK,GAET,GAAiC,UAA7BnE,EAASiE,IAAI,YACbuC,EAAgBxG,EAAS,GAAG/K,4BAE3B,CACDuR,EAAgBxG,EAAS0G,SACzBnS,IAAMoS,EAAgB3G,EAASuG,gBAC/BE,EAAeE,EAAcD,UAChBvC,KAAOH,GAAW2C,EAAe,oBAC9CF,EAAarC,MAAQJ,GAAW2C,EAAe,qBAEnD,MAAO,CACHxC,IAAKqC,EAAcrC,IAAMsC,EAAatC,IAAMH,GAAWhE,EAAU,cACjEoE,KAAMoC,EAAcpC,KAChBqC,EAAarC,KACbJ,GAAWhE,EAAU,kBCmBjCjK,EAAE1G,GAAGqX,OAAS,SAAUjZ,GAEpB,OAAKkD,UAAUzB,OAOR3B,KAAKmI,KAAK,SAAUf,IA3C/B,SAAaZ,EAAStG,EAAOkH,GACzBJ,IAAMyL,EAAWjK,EAAEhC,GACbS,EAAWwL,EAASiE,IAAI,YACb,WAAbzP,GACAwL,EAASiE,IAAI,WAAY,YAE7B1P,IAGIqS,EACAC,EAJEL,EAAgBzO,GAAIhE,GACpB+S,EAAmB9G,EAASiE,IAAI,OAChC8C,EAAoB/G,EAASiE,IAAI,QAKvC,IAFwC,aAAbzP,GAAwC,UAAbA,KACQ,GAAzDsS,EAAmBC,GAAmB/P,QAAQ,QAC5B,CACnBzC,IAAMyS,EAAkBhH,EAASxL,WACjCoS,EAAaI,EAAgB7C,IAC7B0C,EAAcG,EAAgB5C,UAG9BwC,EAAa9R,WAAWgS,GACxBD,EAAc/R,WAAWiS,GAE7BxS,IAAMgR,EAAgBlT,EAAW5E,GAC3BA,EAAMgE,KAAKsC,EAASY,EAAOgF,EAAO,GAAI6M,IACtC/Y,EACNuS,EAASiE,IAAI,CACTE,IAA0B,MAArBoB,EAAcpB,IACboB,EAAcpB,IAAMqC,EAAcrC,IAAMyC,OACxClX,EACN0U,KAA4B,MAAtBmB,EAAcnB,KACdmB,EAAcnB,KAAOoC,EAAcpC,KAAOyC,OAC1CnX,IAaN8S,CAAIjV,KAAME,EAAOkH,KAPZpH,KAAK2B,OAGH6I,GAAIxK,KAAK,SAHhB,GcpDRwI,EAAE1G,GAAGsR,IAAM,SAAU3H,EAAOhD,EAAU+F,EAAM1O,GAExC,OAAOE,KAAKmT,GAAG1H,EAAOhD,EAAU+F,EAAM1O,GAAU,ICApDqI,EAAK,CAAC,GAAI,MAAO,kBAAW4J,EAAWtL,GACnC+B,EAAE1G,UAAU2E,GAAU,SAAUgC,EAAU0D,GAGtC,OAAO0F,GADSE,EAAmBvJ,EAAExI,KAAKwK,MAAMkI,WAApB1S,KACT+R,EAAW,yBAA0BtJ,EAAU0D,MCL1E3D,EAAE1G,GAAG4X,WAAa,SAAUC,GACxB3S,IAAM4S,EAAQD,EAAczO,MAAM,KAAKiB,gBAAQ1F,UAASA,IACxD,OAAOzG,KAAKmI,KAAK,sBACbA,EAAKyR,WAAQ3T,EAAGQ,GACZzG,EAAK+U,gBAAgBtO,QCJjC+B,EAAE1G,GAAG2P,WAAa,SAAUhL,GACxB,OAAOzG,KAAKmI,KAAK,WACbsJ,GAAWzR,KAAMyG,MCHzB+B,EAAE1G,GAAG+X,WAAa,SAAUpT,GACxB,OAAOzG,KAAKmI,KAAK,WACb,WAEWnI,KAAKyG,GAEhB,MAAOpH,QCFfmJ,EAAE1G,GAAGgY,YAAc,SAAUC,GAWzB,OAVA/Z,KAAKmI,cAAMf,EAAOZ,GACda,IAAIsN,EAAUoF,EACVjV,EAAW6P,GACXA,EAAUA,EAAQzQ,KAAKsC,EAASY,EAAOZ,EAAQuB,WAE1CX,IAAUpC,EAAS2P,KACxBA,EAAUnM,EAAEmM,GAASX,SAEzBxL,EAAEhC,GAASwT,OAAOrF,KAEf3U,KAAKwL,UCZhBhD,EAAE1G,GAAGmY,WAAa,SAAUlV,cACxB,OAAOyD,EAAEzD,GAAQuM,aAAKlK,EAAOZ,GAEzB,OADAgC,EAAEhC,GAASsT,YAAY1S,EAAQpH,EAAKgU,QAAUhU,GACvCA,EAAKwK,SCDpBhC,EAAE1G,GAAGoY,eAAiB,WAClBlT,IAAM4K,EAAS,GAyBf,OAxBA5R,KAAKmI,cAAMlC,EAAGO,GACVQ,IAAMuK,EAAW/K,aAAmB2T,gBAAkB3T,EAAQ+K,SAAW,CAAC/K,GAC1EgC,EAAE+I,GAAUpJ,cAAMlC,EAAGO,GACjBQ,IAAMyL,EAAWjK,EAAEhC,GACbwE,EAAOxE,EAAQwE,KACfoP,EAAW5T,EAAQ4T,SAAS9T,cAClC,GAAiB,aAAb8T,GACA5T,EAAQC,OACPD,EAAQ6T,WACsD,EAA/D,CAAC,QAAS,SAAU,WAAY,UAAU5Q,QAAQ2Q,KACgB,IAAlE,CAAC,SAAU,SAAU,QAAS,QAAS,QAAQ3Q,QAAQuB,MACb,IAAzC,CAAC,QAAS,YAAYvB,QAAQuB,IAC3BxE,EAAQmS,SAAU,CACtB3R,IAAM9G,EAAQuS,EAASpO,OACNL,MAAMxC,QAAQtB,GAASA,EAAQ,CAACA,IACxC+L,iBAAS/L,GACd0R,EAAO7O,KAAK,CACR0D,KAAMD,EAAQC,WACdvG,WAMb0R,GC9BXpJ,EAAE1G,GAAGwY,UAAY,WACb,OAAO7N,EAAMzM,KAAKka,mBCDtBlT,IAAMuT,GAAiB,GAwBvB/R,EAAE1G,GAAG0Y,KAAO,WACR,OAAOxa,KAAKmI,KAAK,WApBrB,IAAwBiS,EAChB5T,EACA4R,EAmB2B,SAAvBpY,KAAKgV,MAAMoD,UACXpY,KAAKgV,MAAMoD,QAAU,IAES,SAA9B5Q,EAASxH,KAAM,aACfA,KAAKgV,MAAMoD,SAzBCgC,EAyBwBpa,KAAKoa,SAtB5CG,GAAeH,KAChB5T,EAAU9G,SAASoI,cAAcsS,GACjC1a,SAASkJ,KAAK6L,YAAYjO,GAC1B4R,EAAU5Q,EAAShB,EAAS,WAC5BA,EAAQoM,WAAW0B,YAAY9N,GACf,SAAZ4R,IACAA,EAAU,SAEdmC,GAAeH,GAAYhC,GAExBmC,GAAeH,QCZ1B5R,EAAE1G,GAAG2Y,SAAW,SAAUhS,GACtB,OAAOzI,KAAK0a,QAAQjS,GAAU0J,IAAInS,KAAK2a,QAAQlS,KCFnDD,EAAE1G,GAAG8Y,OAAS,WACV,OAAO5a,KAAKmI,KAAK,WACiB,SAA9BX,EAASxH,KAAM,WAAwBwI,EAAExI,MAAMwa,OAAShS,EAAExI,MAAMmY,UCQxE3P,EAAE1G,GAAG+Y,OAAS,WACZ,OAAO7a,KAAKmI,KAAK,WACf,OAAOnI,KAAK8a,cCAhBtS,EAAE1G,GAAGiZ,WAAa,SAAoBC,GAKpC,OAJI/V,EAAS+V,KACXA,SAGKhb,KAAKmI,KAAK,WACfnI,KAAKgV,MAAMiG,yBAA2BD,EACtChb,KAAKgV,MAAMkG,mBAAqBF,KCLpCxS,EAAE1G,GAAGqZ,cAAgB,SAEnBrb,GAGAkH,IAAMoU,EAAOpb,KACPqb,EAAS,CAAC,sBAAuB,iBAEvC,SAASC,EAAgDjc,GACnDA,EAAE0F,SAAW/E,OAKjBF,EAASoE,KAAKlE,KAAMX,GAEpB8I,EAAKkT,WAASpV,EAAGiG,GACfkP,EAAKlI,IAAIhH,EAAOoP,MAQpB,OAJAnT,EAAKkT,WAASpV,EAAGiG,GACfkP,EAAKjI,GAAGjH,EAAOoP,KAGVtb,MC7BTwI,EAAE1G,GAAGyZ,gBAAkB,SAAoBA,GACzC,OAAOvb,KAAKmI,KAAK,WACfnI,KAAKgV,MAAMwG,sBAAwBD,EACnCvb,KAAKgV,MAAMuG,gBAAkBA,KCHjC/S,EAAE1G,GAAG2Z,UAAY,SAAoBA,GACnC,OAAOzb,KAAKmI,KAAK,WACfnI,KAAKgV,MAAM0G,gBAAkBD,EAC7Bzb,KAAKgV,MAAMyG,UAAYA,KCT3BzU,IAAM2U,GAAsC,GAS5C,SAASC,GACPnT,EACAoT,EACAvY,EACAkD,GAEAa,IAAIyU,EAAYtN,GAAKhI,EAAS,kBAEzBsV,GAEHtN,GAAKhI,EAAS,iBADdsV,EAAY,KAIuB,IAAjCA,EAAUrS,QAAQhB,KACpBqT,EAAU/Y,KAAK0F,GACfoT,EAAQ3X,KAAKsC,EAASlD,EAAGkD,ICnB7BgC,EAAE1G,GAAG8Z,SAAW,WACd,OAAO5b,KAAKmI,cAAM7E,EAAGkD,GACnBQ,IAAM+U,EAAQvT,EAAEhC,GAEhB2B,EAAKwT,YAAUlT,EAAkBoT,GAC3BE,EAAM9J,GAAGxJ,IACXmT,GAASnT,EAAUoT,EAASvY,EAAGkD,GAGjCuV,EAAMtR,KAAKhC,GAAUN,cAAM7E,EAAGkD,GAC5BoV,GAASnT,EAAUoT,EAASvY,EAAGkD,UCAvCgC,EAAEwT,YAAc,SAAUC,GACxB5U,IAAI6U,EAAW1T,EAAE,iBAEb0T,EAASva,QACXua,EAAS1N,KAAK,uBAAuB,GAEhCtJ,EAAY+W,IACfC,EAASxF,IAAI,UAAWuF,KAGtB/W,EAAY+W,KACdA,EAAS,KAGXC,EAAW1T,EAAE,8BACV2T,SAASzc,SAASkJ,MAClBiS,SACAnE,IAAI,UAAWuF,IAGpB5U,IAAI+U,EAAQF,EAAS1N,KAAK,mBAAqB,EAE/C,OAAO0N,EAAS1N,KAAK,mBAAoB4N,GAAOnS,SAAS,sBCvB3DzB,EAAE6T,YAAc,SAAUC,mBAAQ,GAChCtV,IAAMkV,EAAW1T,EAAE,iBAEnB,GAAK0T,EAASva,OAAd,CAIA0F,IAAI+U,EAAQE,EAAQ,EAAIJ,EAAS1N,KAAK,kBAE1B,EAAR4N,EACFF,EAAS1N,KAAK,mBAAoB4N,GAIpCF,EACG1N,KAAK,iBAAkB,GACvB+N,YAAY,qBACZ/N,KAAK,uBAAuB,GAC5B2M,yBACKe,EAAS1N,KAAK,wBAChB0N,EAAS1Q,aC3BjBhD,EAAEgU,WAAa,WAEbxV,IAAMyV,EAAezS,EAAM0S,QACvBN,EAAQpS,EAAMwE,KAAK,sBAAwB,EAE/CxE,EACGC,SAAS,eACTyS,MAAMD,GACNjO,KAAK,sBAAuB4N,ICDjC5T,EAAEmU,aAAe,SAAUL,mBAAQ,GACjCjV,IAAI+U,EAAQE,EAAQ,EAAItS,EAAMwE,KAAK,qBAEvB,EAAR4N,EACFpS,EAAMwE,KAAK,sBAAuB4N,GAIpCpS,EAAMwE,KAAK,oBAAqB,GAAG+N,YAAY,eAAeG,MAAM,KCdtElU,EAAEoU,SAAW,SAAU9a,EAAgB+a,kBAAQ,IAC7CxV,IAAIyV,EAAa,KAEjB,OAAO,yEACD3X,EAAO2X,KACTA,EAAQvb,sBACNO,EAAGqB,MAAMnD,EAAM+D,GACf+Y,EAAQ,MACPD,MCNT7V,IAAM+V,GAA4B,GCTlC,SAASC,GACPjJ,EACAkJ,EACAlY,EACAmY,EACAC,IAGEA,EADGA,GACU,IAIJC,KAAOF,EAElBlW,IAAMqW,EAAmBtJ,WAAkBkJ,EAIrB,oBAAXK,QAETA,OAAOvY,GAAQgI,QAAQsQ,EAAeF,GAGxCnW,IAAM2L,EAAUnK,EAAEzD,GAGlB4N,EAAQ5F,QAAQsQ,EAAeF,GAS/BnW,IAMMiG,EAA2B,IAAI5L,YAAYgc,EANhB,CAC/B/d,SAAS,EACTC,YAAY,EACZC,OAAQ2d,IAMVlQ,EAAYG,QAAU+P,EAEtBxK,EAAQ,GAAGrF,cAAcL,GDnC3BzE,EAAE+U,KAAO,SAAU9W,GACjB,IAAKvB,EAAYuB,KAAUvB,EAAY6X,GAAKtW,IAC1C,OAAOsW,GAAKtW,GAGd,SAAS+W,IACP,OAAOjH,KAAKkH,MAA4B,OAArB,EAAIlH,KAAKmH,WACzBrO,SAAS,IACTsO,UAAU,GAGf3W,IAAMuW,EACJ,IACAC,IACAA,IACA,IACAA,IACA,IACAA,IACA,IACAA,IACA,IACAA,IACAA,IACAA,IAMF,OAJKtY,EAAYuB,KACfsW,GAAKtW,GAAQ8W,GAGRA,GE1BTrT,EAAK0R,SAAW,SAAUnT,EAAmBoT,GACvC3W,EAAYuD,IAAavD,EAAY2W,GACvCrT,EAAE9I,UAAUkc,YAIdD,GAAQlT,GAAYoT,EACpBrT,EAAEC,GAAUN,cAAM7E,EAAGkD,UAAYoV,GAASnT,EAAUoT,EAASvY,EAAGkD,OCmFhE,SA/BIoX,GAgCFnV,EACA0F,kBAAmB,IAxBdnO,aAAmBoM,EAAO,GAAIyR,IAK7B7d,WAAe,SAKfA,eAAW,EAKXA,iBAAc,EAKdA,WAAQ,EAMdA,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAE5B8B,EAAOpM,KAAKmO,QAASA,GAGrBnH,IAAM8W,EAAY9d,KAAKmO,QAAQ2P,UAC3B7Y,EAAS6Y,KACX9d,KAAKmO,QAAQ2P,UAAY,CACvBC,KAAMD,EACNE,GAAIF,IAIR9d,KAAKie,SAxDTjX,IAAM6W,GAA2B,CAC/BC,UAAW,EACX3E,OAAQ,EACR+E,aAAc,gBACdC,YAAa,2BACbC,cAAe,8BC3EjB,SAASC,GAAa7X,EAAsBC,GAC1CO,IAAMsX,EAAO9V,EAAEhC,GAAS8X,KAAK7X,GAE7B,OAAK6X,EAIE,IAAIC,SACT,iBACcD,+CAFT,GAHE,gBDgIDE,+BACNxe,KAAKye,MAAQje,OAAOke,iCAClB1X,IAAM2X,EAAiBne,OAAO0W,YACxBpQ,EAAY6X,EAAiB3e,EAAK4e,YAAc,OAAS,KAGzDC,EAFa7e,EAAKmO,QAAQ2P,UAAwBhX,IACvCyP,KAAKuI,IAAIH,EAAiB3e,EAAK4e,aAI9CD,EAAiB3e,EAAK4e,aACtBD,GAAkB3e,EAAKmO,QAAQgL,QAC/B0F,EAEA7e,EAAK+e,SAEJJ,EAAiB3e,EAAK4e,aAAeC,GACtCF,GAAkB3e,EAAKmO,QAAQgL,SAE/BnZ,EAAKgf,MAGPhf,EAAK4e,YAAcD,kBAQfM,sBAAaxY,GACnBuW,GAAevW,EAAM,WAAYzG,KAAKyS,SAAUzS,oBAM1Cmb,yBACa,YAAfnb,KAAKkf,QACPlf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,WAGD,cAAfjf,KAAKkf,QACPlf,KAAKkf,MAAQ,WACblf,KAAKif,aAAa,2BAOfD,0BAEY,YAAfhf,KAAKkf,OACU,WAAflf,KAAKkf,OACJlf,KAAKyS,SAASkF,SAAS3X,KAAKmO,QAAQ+P,gBAKvCle,KAAKif,aAAa,OAClBjf,KAAKkf,MAAQ,UACblf,KAAKyS,SACF8J,YAAYvc,KAAKmO,QAAQiQ,eACzBnU,SAASjK,KAAKmO,QAAQgQ,aACtBhD,gCAAoBnb,EAAKmb,iCAMvB4D,4BAEY,cAAf/e,KAAKkf,OACU,aAAflf,KAAKkf,OACJlf,KAAKyS,SAASkF,SAAS3X,KAAKmO,QAAQ+P,gBAKvCle,KAAKif,aAAa,SAClBjf,KAAKkf,MAAQ,YACblf,KAAKyS,SACF8J,YAAYvc,KAAKmO,QAAQgQ,aACzBlU,SAASjK,KAAKmO,QAAQiQ,eACtBjD,gCAAoBnb,EAAKmb,iCAMvB8C,6BACDje,KAAKmf,WAITnf,KAAKmf,UAAW,EAChBnf,KAAKkf,MAAQ,SACblf,KAAKyS,SACFxI,SAASjK,KAAKmO,QAAQ+P,cACtB3B,YAAYvc,KAAKmO,QAAQgQ,aACzB5B,YAAYvc,KAAKmO,QAAQiQ,eAC5Bpe,KAAK4e,YAAcpe,OAAO0W,YAE1BnN,EAAQoJ,GAAG,2BAAgBnT,EAAKwe,4BAM3BY,8BACApf,KAAKmf,WAIVnf,KAAKmf,UAAW,EAChBnf,KAAKyS,SACF8J,YAAYvc,KAAKmO,QAAQ+P,cACzB3B,YAAYvc,KAAKmO,QAAQgQ,aACzB5B,YAAYvc,KAAKmO,QAAQiQ,eAE5BrU,EAAQmJ,IAAI,2BAAgBlT,EAAKwe,aACjChe,OAAO6e,qBAAqBrf,KAAKye,sBAM5Ba,oBACL,OAAOtf,KAAKkf,OAIhBhV,EAAK0T,SAAWA,GE5QhB5W,IAAMuY,GAAa,gBAEnB/W,aACE0B,EAAK0R,aAAa2D,OAAe,WAC/B,IAAIrV,EAAK0T,SAAS5d,KAAMqe,GAAare,KAAMuf,SC+D7C,SApCaC,GAqCX/W,EACA0F,kBAAmB,IA7BdnO,aAAmBoM,EAAO,GAAIyR,IAgCnC7W,IAAMyY,EAAc,QAAQzf,KAAK0f,uBACjC1f,KAAK2f,UAAYF,EACjBzf,KAAK4f,cAAmBH,UACxBzf,KAAK6f,YAAiBJ,YACtBzf,KAAK8f,UAAeL,UAEpBzf,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAE5B8B,EAAOpM,KAAKmO,QAASA,GAErBnO,KAAK+f,YAvDT/Y,IAAM6W,GAA2B,CAC/BmC,WAAW,gBA4DHD,qBAEN/Y,IAAMoU,EAAOpb,KACPigB,EAASjgB,KAAKkgB,WAGpBlgB,KAAKyS,SAASU,GAAG,YAAanT,iBAAoB,WAChDgH,IACMmZ,EADU3X,EAAExI,MACI4H,SAEtBqY,EAAO9X,cAAMlC,EAAGsC,GACV4X,EAAMlO,GAAG1J,IACX6S,EAAKR,OAAOrS,OAMlBvI,KAAKyS,SAASU,GACZ,iBACSnT,KAAK0f,8BACd,WACE1Y,IACMmZ,EADU3X,EAAExI,MACIwV,YAAY4F,aAAkB9Q,QAEpD8Q,EAAKgF,MAAMD,mBASTE,gBAAOF,GACb,OAAOA,EAAMxI,SAAS3X,KAAK4f,6BAMrBM,oBACN,OAAOlgB,KAAKyS,SAASyC,aAAalV,8BAO5BsgB,iBACN/X,GAEA,OAAItD,EAASsD,GACJvI,KAAKkgB,WAAW7K,GAAG9M,GAGrBC,EAAED,GAAM+B,sBAQT2U,sBAAaxY,EAAa0Z,GAChCnD,GAAevW,EAAMzG,KAAK0f,eAAgBS,EAAOngB,oBAQ3Cmb,uBAAcoF,EAAcJ,GAC9BngB,KAAKqgB,OAAOF,IACdI,EAASxF,WAAW,GAAGyF,OAAO,QAAQ3F,SAASE,WAAW,IAE1D/a,KAAKif,aAAa,SAAUkB,KAE5BI,EAASC,OAAO,IAEhBxgB,KAAKif,aAAa,SAAUkB,kBAQzBlQ,cACL1H,cAEM4X,EAAQngB,KAAKsgB,QAAQ/X,GAE3B,IAAIvI,KAAKqgB,OAAOF,GAAhB,CAKIngB,KAAKmO,QAAQ6R,WACfhgB,KAAKyS,SAASyC,aAAalV,oBAAsBmI,cAAMlC,EAAGO,GACxDQ,IAAMyL,EAAWjK,EAAEhC,GAEdiM,EAASR,GAAGkO,IACfngB,EAAKogB,MAAM3N,KAKjBzL,IAAMuZ,EAAWJ,EAAMjL,aAAalV,gBAEpCugB,EACGC,OAAOD,EAAS,GAAGE,cACnBtF,gCAAoBnb,EAAKmb,cAAcoF,EAAUJ,KAEpDngB,KAAKif,aAAa,OAAQkB,GAE1BA,EAAMlW,SAASjK,KAAK4f,8BAOfQ,eACL7X,cAEM4X,EAAQngB,KAAKsgB,QAAQ/X,GAE3B,GAAKvI,KAAKqgB,OAAOF,GAAjB,CAIAnZ,IAAMuZ,EAAWJ,EAAMjL,aAAalV,gBAEpCA,KAAKif,aAAa,QAASkB,GAE3BA,EAAM5D,YAAYvc,KAAK4f,eAEvBW,EACGxF,WAAW,GACXyF,OAAOD,EAAS,GAAGE,cACnB5F,SACAE,WAAW,IACXyF,OAAO,IACPrF,gCAAoBnb,EAAKmb,cAAcoF,EAAUJ,oBAO/CvF,gBACLrS,GAEAvB,IAAMmZ,EAAQngB,KAAKsgB,QAAQ/X,GAE3BvI,KAAKqgB,OAAOF,GAASngB,KAAKogB,MAAMD,GAASngB,KAAKiQ,KAAKkQ,iBAM9CO,8BACL1gB,KAAKkgB,WAAW/X,cAAMlC,EAAGO,UAAYxG,EAAKiQ,KAAKzJ,mBAM1Cma,+BACL3gB,KAAKkgB,WAAW/X,cAAMlC,EAAGO,UAAYxG,EAAKogB,MAAM5Z,MChPpD,IAAMoa,oJACMlB,wBACR,MAAO,eAFYF,IAMvBtV,EAAK0W,SAAWA,GCzBhB5Z,IAAMuY,GAAa,gBAEnB/W,aACE0B,EAAK0R,aAAa2D,OAAe,WAC/B,IAAIrV,EAAK0W,SAAS5gB,KAAMqe,GAAare,KAAMuf,SCe/C,IAAMsB,oJACMnB,wBACR,MAAO,YAFSF,IAMpBtV,EAAK2W,MAAQA,GCzBb7Z,IAAMuY,GAAa,aAEnB/W,aACE0B,EAAK0R,aAAa2D,OAAe,WAC/B,IAAIrV,EAAK2W,MAAM7gB,KAAMqe,GAAare,KAAMuf,SC2D1C,SApCIuB,GAqCFrY,GA5BMzI,YAAawI,IAKbxI,aAAcwI,IAKdxI,iBAAoCwI,IAKpCxI,kBAAqCwI,IAKrCxI,iBAAa,EAKbA,iBAAc,EAKpBA,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAC5BtK,KAAK+gB,oBAMAA,gBACL/gB,KAAKghB,OAAShhB,KAAKyS,SAAShI,KAAK,YACjCzK,KAAKihB,QAAUjhB,KAAKyS,SAAShI,KAAK,YAClCzK,KAAKkhB,WAAalhB,KAAKyS,SAASkF,SAAS,yBAEzC3X,KAAKmhB,mBACLnhB,KAAKohB,mBACLphB,KAAKqhB,iCAOCC,4BAAmBC,GACzB,MACE,IAAIA,wIAKCA,oBAODC,kCACNxa,IAAMya,EAAWzhB,KAAK0hB,YAAY,GAC5BC,EAAc3hB,KAAK2hB,YACnBC,EAAe5hB,KAAKihB,QAAQtf,OAElC8f,EAAS9I,QAAUgJ,IAAgBC,EACnCH,EAASI,gBAAkBF,GAAeA,IAAgBC,gBAMpDR,uCACAU,EAAmB,0BAEzB9hB,KAAKihB,QAAQ9Y,cAAMlC,EAAG8b,GACpB/a,IAAMgb,EAAOxZ,EAAEuZ,GAKf,GAFAC,EAAKvX,KAAK,6BAA6Be,SAElCxL,EAAKkhB,WAAV,CAKAla,IAAMib,EAAYzZ,EAAExI,EAAKshB,mBAAmB,OACzCY,UAAUF,GACVvX,KAAK,0BAGJuX,EAAKrK,SAASmK,KAChBG,EAAU,GAAGtJ,SAAU,EACvB3Y,EAAK2hB,eAGP3hB,EAAKwhB,yBAGLS,EAAU9O,GAAG,oBACP8O,EAAU,GAAGtJ,SACfqJ,EAAK/X,SAAS6X,GACd9hB,EAAK2hB,gBAELK,EAAKzF,YAAYuF,GACjB9hB,EAAK2hB,eAGP3hB,EAAKwhB,2BAGPxhB,EAAKmiB,aAAeniB,EAAKmiB,aAAahQ,IAAI8P,oBAOtCd,uCAENnhB,KAAKghB,OAAOvW,KAAK,6BAA6Be,SAEzCxL,KAAKkhB,aAIVlhB,KAAK0hB,YAAclZ,EAAExI,KAAKshB,mBAAmB,OAC1CY,UAAUliB,KAAKghB,QACfvW,KAAK,0BACL0I,GAAG,oBACFnM,IAAMob,EAAepiB,EAAK0hB,YAAY,GAAG/I,QACzC3Y,EAAK2hB,YAAcS,EAAepiB,EAAKihB,QAAQtf,OAAS,EAExD3B,EAAKmiB,aAAaha,cAAMlC,EAAGwb,GACzBA,EAAS9I,QAAUyJ,IAGrBpiB,EAAKihB,QAAQ9Y,cAAMlC,EAAG8b,GACpBK,EACI5Z,EAAEuZ,GAAK9X,SAAS,2BAChBzB,EAAEuZ,GAAKxF,YAAY,8CAQvB8E,uCACAgB,EAAe,yBAErBriB,KAAKghB,OAAOvW,KAAK,MAAMtC,cAAM7E,EAAG8F,GAC9BpC,IAAMsb,EAAe9Z,EAAEY,GAAIuO,SAAS0K,GAEpCriB,EAAKihB,QAAQ9Y,cAAMlC,EAAG8b,GACpB/a,IAAMub,EAAM/Z,EAAEuZ,GAAKtX,KAAK,MAAM4K,GAAG/R,GAEjCgf,EACIC,EAAItY,SAASoY,GACbE,EAAIhG,YAAY8F,QAM5Brb,IAAMwb,GAAW,cAEjBha,aACE0B,EAAK0R,SAAS,cAAe,WAC3B5U,IAAMyL,EAAWjK,EAAExI,MAEdyS,EAASjE,KAAKgU,KACjB/P,EAASjE,KAAKgU,GAAU,IAAI1B,GAAMrO,QAKxCvI,EAAKuY,aAAe,SAClBha,IAEkBvD,EAAYuD,GAAYD,EAAE,eAAiBA,EAAEC,IAErDN,cAAMlC,EAAGO,GACjBQ,IAAMyL,EAAWjK,EAAEhC,GACb0W,EAAWzK,EAASjE,KAAKgU,IAE3BtF,EACFA,EAAS6D,OAETtO,EAASjE,KAAKgU,GAAU,IAAI1B,GAAMrO,OC1MxCzL,IAAM0b,GAAa,uBACbC,GAAY,sBACZC,GAAW,mBACXC,GAAc,yBACdC,GAAc,iCAEhBC,GAAU,EAOd,SAASC,GAAQ9W,GACf,QACE6W,KAUyB,EATzB,CACE,YACA,UACA,YACA,QACA,YACA,WACA,aACA,cACAtZ,QAAQyC,EAAMlB,OAQpB,SAASiY,GAAS/W,GACG,eAAfA,EAAMlB,KAER+X,IAAW,GAEqD,EAAhE,CAAC,YAAa,WAAY,eAAetZ,QAAQyC,EAAMlB,OAGvDzJ,WAAW,WACLwhB,MACFA,IAED,KClCP,SAASvI,GAAKtO,EAAcgX,GAE1B,KAAIhX,aAAiB5L,YAA+B,IAAjB4L,EAAMjL,QAAzC,CAKA+F,IAAMmc,EACkB,oBAAfC,YACPlX,aAAiBkX,YACjBlX,EAAM6W,QAAQphB,OACVuK,EAAM6W,QAAQ,GACb7W,EAEDmX,EAAcF,EAAcG,MAC5BC,EAAcJ,EAAcK,MAG5BrK,EAAS+J,EAAQ/J,SACjBqH,EAAS0C,EAAQO,cACjB/G,EAAQwG,EAAQQ,aAChBC,EACDN,EAAclK,EAAOtC,KADpB8M,EAEDJ,EAAcpK,EAAOvC,IAEpBgN,EAAWrN,KAAKC,IACpBD,KAAKsN,IAAItN,KAAKsN,IAAIrD,EAAQ,GAAKjK,KAAKsN,IAAInH,EAAO,GAAI,IACnD,IAIIoH,EACJ,gBAA2BpH,EAAQ,EAAnBiH,UACDnD,EAAS,EAApBmD,qBAGNnb,EACE,8CACkBob,eAAqBA,oBACtBA,EAAW,qBAAoBA,EAAW,0CAG1DpV,KAAK,yBAA0BsV,GAC/B5B,UAAUgB,GACVrI,SACAY,UAAUqI,IA0Cf,SAAS3L,KACPnR,IAAMkc,EAAU1a,EAAExI,MAElBkjB,EAAQhO,SAAS,qBAAqB/M,cAAMlC,EAAG8d,IAtCjD,SAAsBC,GACpB,GAAKA,EAAMriB,SAAUqiB,EAAMxV,KAAK,wBAAhC,CAIAwV,EAAMxV,KAAK,wBAAwB,GAEnCnH,IAAI4c,EAAc1iB,6BAAiByiB,EAAMxY,UAAU,KAC7CsY,EAAYE,EAAMxV,KAAK,0BAE7BwV,EACG/Z,SAAS,yBACTwR,UAAUqI,EAAU9d,QAAQ,WAAY,gBACxCmV,yBACC7K,aAAa2T,GAEbD,EACG/Z,SAAS,wBACTwR,UAAUqI,EAAU9d,QAAQ,WAAY,gBAE3Cie,EAAc1iB,6BAAiByiB,EAAMxY,UAAU,KAE/CjK,sBACEyiB,EAAM7I,yBACJ7K,aAAa2T,GACbD,EAAMxY,YAEP,MAYL0Y,CAAa1b,EAAEub,MAGjBb,EAAQhQ,IAAOyP,OAAaC,OAAYC,GAAe1K,IAOzD,SAASgM,GAAWjY,GAClB,GAAK8W,GAAQ9W,KAIb+W,GAAS/W,GAGLA,EAAMnH,SAAWrF,UAArB,CAIAsH,IAAM2L,EAAUnK,EAAE0D,EAAMnH,QAGlBme,EAAUvQ,EAAQgF,SAAS,eAC7BhF,EACAA,EAAQ6C,QAAQ,gBAAgBlL,QAEpC,GAAK4Y,EAAQvhB,SAKTuhB,EAAQ5b,KAAK,aAAgBpC,EAAYge,EAAQ5E,KAAK,aAI1D,GAAmB,eAAfpS,EAAMlB,KAAuB,CAC/B3D,IAAI+c,GAAS,EAGTtH,EAAQvb,sBACVub,EAAQ,EACRtC,GAAKtO,EAAOgX,IACX,KAEGmB,aAEAvH,IACFxM,aAAawM,GACbA,EAAQ,EACRtC,GAAKtO,EAAOgX,IAGTkB,IACHA,GAAS,EACTjM,GAAKjU,KAAKgf,KAcdA,EAAQ/P,GAAG,uBARL2J,IACFxM,aAAawM,GACbA,EAAQ,GAGVuH,MAGiClR,GAAG,uBAAwBkR,QAE9D7J,GAAKtO,EAAOgX,GACZA,EAAQ/P,GAAMwP,OAAaC,OAAYC,GAAe1K,KAI1D3P,aACEsB,EAAUqJ,GAAGuP,GAAYyB,IAAYhR,GAAG2P,GAAaG,MC7KvDjc,IAAMsd,GAAgC,CACpCC,QAAQ,EACRC,gBAAgB,GAQlB,SAASC,GAAWvY,EAAcsC,kBAAyB,IACzDA,EAAOpC,EAAO,GAAIkY,GAAa9V,GAE/BxH,IAAM0d,EAAQxY,EAAMnH,OACd4f,EAASnc,EAAEkc,GACXE,EAAY1Y,EAAMlB,KAClB9K,EAAQykB,EAAOtgB,MAGfwgB,EAAYF,EAAOrG,KAAK,SAAW,GACzC,MAGO,EAFL,CAAC,WAAY,SAAU,SAAU,QAAS,QAAS,SAAS7U,QAC1Dob,IAFJ,CAQA7d,IAAM8d,EAAaH,EAAO/c,OAAO,mBAmCjC,GAhCkB,UAAdgd,GACFE,EAAW7a,SAAS,wBAGJ,SAAd2a,GACFE,EAAWvI,YAAY,wBAIP,SAAdqI,GAAsC,UAAdA,IAC1B1kB,EACI4kB,EAAW7a,SAAS,4BACpB6a,EAAWvI,YAAY,6BAI7BmI,EAAMrK,SACFyK,EAAW7a,SAAS,2BACpB6a,EAAWvI,YAAY,2BAIV,UAAdqI,GAAuC,SAAdA,GACzBpW,EAAKgW,iBACNE,EAAMK,WAENL,EAAMK,SAASC,MACXF,EAAWvI,YAAY,gCACvBuI,EAAW7a,SAAS,iCAItB0a,EAAO1S,GAAG,YAAa,CAGzBjL,IAAMie,EAAa/kB,EACfglB,GAAgB,EAEsB,KAAtCD,EAAWjf,QAAQ,UAAW,MAChC2e,EAAOtgB,IAAI,IAAM4gB,GACjBC,GAAgB,GAIlBP,EAAOQ,YAAY,IACnBne,IAAMwZ,EAASmE,EAAOQ,cAChB1E,EAAeiE,EAAMjE,aAERD,EAAfC,GACFkE,EAAOQ,YAAY1E,GAIjByE,GACFP,EAAOtgB,IAAI4gB,GAKXzW,EAAK+V,QACPO,EAAWra,KAAK,2BAA2Be,SAG7CxE,IAAMoe,EAAYT,EAAOrG,KAAK,aAC1B8G,KACE5W,EAAK+V,QAAU/V,EAAKgW,iBACtBhc,EACE,8FAC4D4c,EAC1D,UACFjJ,SAAS2I,GAGbA,EACGra,KAAK,mCACL4a,KAAKnlB,EAAMyB,OAAO0N,cAKrByV,EAAWra,KAAK,0BAA0B9I,QAC1CmjB,EAAWra,KAAK,yBAAyB9I,QACzCyjB,IAEAN,EAAW7a,SAAS,8BC7GxB,SAASqb,GAAiBC,GACxBve,IAAMwH,EAAO+W,EAAQ/W,OAEfgX,EAAShX,EAAKiX,eACdC,EAAQlX,EAAKmX,cACbC,EAASpX,EAAKqX,eACdlB,EAASnW,EAAKsX,eACdC,EAAMvX,EAAKwX,YACXxP,EAAMhI,EAAKyX,YACXC,EAAa1X,EAAK2X,iBAClBC,EAAa5X,EAAK6X,iBAClBC,EAAa9X,EAAK+X,mBAClBrmB,EAAQykB,EAAOtgB,MACfmiB,GAAYtmB,EAAQ6lB,IAAQvP,EAAMuP,GAAQ,IAEhDL,EAAMhJ,MAAS8J,OACfhB,EAAO9I,MAAS,IAAM8J,OAElBN,IACFR,EAAMhP,IAAI,gBAAiB,OAC3B8O,EAAO9O,IAAI,eAAgB,QAG7BkP,EAAOlP,IAAI,OAAW8P,OAElBJ,GACFE,EAAWjB,KAAKnlB,GAGN,GAAZsmB,EACIjB,EAAQtb,SAAS,oBACjBsb,EAAQhJ,YAAY,oBAO1B,SAASgI,GAAOgB,GACdve,IAAMwe,EAAShd,EAAE,yCACXkd,EAAQld,EAAE,wCACVod,EAASpd,EAAE,yCACXmc,EAASY,EAAQ9a,KAAK,uBACtByb,EAAavB,EAAO,GAAGtK,SACvB+L,EAAab,EAAQ5N,SAAS,wBAGpCuO,EACIX,EAAQtb,SAAS,wBACjBsb,EAAQhJ,YAAY,wBAGxBgJ,EAAQ9a,KAAK,sBAAsBe,SACnC+Z,EAAQ9a,KAAK,qBAAqBe,SAClC+Z,EAAQ9a,KAAK,sBAAsBe,SACnC+Z,EAAQkB,OAAOjB,GAAQiB,OAAOf,GAAOe,OAAOb,GAG5Cve,IAAIif,EAAa9d,IACb4d,IACFE,EAAa9d,EAAE,iBACfod,EAAOrO,QAAQkP,OAAOH,IAGxBf,EAAQ/W,KAAK,iBAAkBgX,GAC/BD,EAAQ/W,KAAK,gBAAiBkX,GAC9BH,EAAQ/W,KAAK,iBAAkBoX,GAC/BL,EAAQ/W,KAAK,iBAAkBmW,GAC/BY,EAAQ/W,KAAK,cAAemW,EAAOrG,KAAK,QACxCiH,EAAQ/W,KAAK,cAAemW,EAAOrG,KAAK,QACxCiH,EAAQ/W,KAAK,mBAAoB0X,GACjCX,EAAQ/W,KAAK,mBAAoB4X,GACjCb,EAAQ/W,KAAK,qBAAsB8X,GAGnChB,GAAiBC,GDsCnB/c,aAEEsB,EAAUqJ,GACR,mBACA,wBACA,CAAEK,YAAY,GACdiR,IAIF3a,EAAUqJ,GACR,QACA,kDACA,WACE3K,EAAExI,MACCwV,QAAQ,mBACRvL,SAAS,2BACTQ,KAAK,yBAAyB,GAC9Bic,UAKP5c,EAAUqJ,GACR,QACA,iDACA,WACE3K,EAAExI,MACCwV,QAAQ,mBACR+G,YAAY,2BACZ9R,KAAK,yBACLpG,IAAI,MAOX6F,EAAK0R,SAAS,kBAAmB,WAC/BpT,EAAExI,MAAMyK,KAAK,yBAAyBsC,QAAQ,QAAS,CACrDyX,gBAAgB,QAKtBta,EAAKyc,iBAAmB,SACtBle,IAEkBvD,EAAYuD,GAAYD,EAAE,mBAAqBA,EAAEC,IAEzDN,cAAMlC,EAAGO,GACjBgC,EAAEhC,GAASiE,KAAK,yBAAyBsC,QAAQ,QAAS,CACxDwX,QAAQ,OCvFdvd,IAAM4f,GAAgB,mCAEtBpe,aAEEsB,EAAUqJ,GAAG,eAAgByT,GAAe,WAG1CtB,GAFgB9c,EAAExI,MAAM4H,YAM1BkC,EAAUqJ,GAAGuP,GAAYkE,GAAe,SAAU1a,GAC3C8W,GAAQ9W,KAIb+W,GAAS/W,GAEJlM,KAA0Bqa,UAIf7R,EAAExI,MAAM4H,SAEhBqC,SAAS,wBAInBH,EAAUqJ,GAAGyP,GAAUgE,GAAe,SAAU1a,GACzC8W,GAAQ9W,KAIRlM,KAA0Bqa,UAIf7R,EAAExI,MAAM4H,SAEhB2U,YAAY,wBAGtBzS,EAAUqJ,GAAG2P,GAAa8D,GAAe3D,IAKzC/Y,EAAK0R,SAAS,eAAgB,WAC5B2I,GAAO/b,EAAExI,WAIbkK,EAAK2c,cAAgB,SACnBpe,IAEkBvD,EAAYuD,GAAYD,EAAE,gBAAkBA,EAAEC,IAEtDN,cAAMlC,EAAGO,GACjB+d,GAAO/b,EAAEhC,OChGX,SA/BIsgB,GAgCFre,EACA0F,6BAAmB,IAxBdnO,aAAmBoM,EAAO,GAAIyR,IAK7B7d,WAAe,SAqBrBA,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAE5B8B,EAAOpM,KAAKmO,QAASA,GAErBnO,KAAK+mB,KAAO/mB,KAAKyS,SAAShI,KAAK,aAC/BzK,KAAKgnB,MAAQhnB,KAAKyS,SAAShI,KAAK,kBAChCzK,KAAKinB,UAAYjnB,KAAKgnB,MAAMvc,KAAK,aAEJ,UAAzBzK,KAAKmO,QAAQpB,UACf/M,KAAK+mB,KAAK5T,GAAG,0CAA+BnT,EAAKiQ,SACjDjQ,KAAKyS,SAASU,GAAG,+BAAoBnT,EAAKogB,WAGf,UAAzBpgB,KAAKmO,QAAQpB,SACf/M,KAAK+mB,KAAK5T,GAAGuP,qBAAkB1iB,EAAKiQ,SAItCnG,EAAUqJ,GAAGuP,YAAaxW,GACpB1D,EAAE0D,EAAMnH,QAAuByQ,QAAQ,qBAAqB7T,QAIhE3B,EAAKogB,UA9DXpZ,IAAM6W,GAA2B,CAC/B9Q,QAAS,sBAqEDkS,sBAAaxY,GACnBuW,GAAevW,EAAM,MAAOzG,KAAKyS,SAAUzS,oBAMrCqgB,kBACN,MAAsB,YAAfrgB,KAAKkf,OAAsC,WAAflf,KAAKkf,oBAMnCjP,2BACDjQ,KAAKqgB,WAKTrgB,KAAKinB,UAAU9e,cAAMf,EAAO8f,GAC1BlgB,IAAM6V,EAAW,IAAM7c,EAAKinB,UAAUtlB,OAASyF,QAE/C8f,EAAIlS,MAAMmS,gBAAkBtK,EAC5BqK,EAAIlS,MAAMoS,sBAAwBvK,IAGpC7c,KAAKgnB,MAAMtQ,IAAI,SAAU,QAAQzM,SAAS,sBAGtCjK,KAAK+mB,KAAKtc,KAAK,oBAAoB9I,QACrC3B,KAAK+mB,KAAK9c,SAAS,mBAGrBjK,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,QAGlBjf,KAAKinB,UAAU3c,QAAQ6Q,yBACjBnb,EAAK+mB,KAAKpP,SAAS,qBACrB3X,EAAKkf,MAAQ,SACblf,EAAKif,aAAa,4BAQjBmB,4BACApgB,KAAKqgB,WAKVrgB,KAAKinB,UAAU9e,cAAMf,EAAO8f,GAC1BlgB,IAAM6V,EAAW,GAAKzV,OAEtB8f,EAAIlS,MAAMmS,gBAAkBtK,EAC5BqK,EAAIlS,MAAMoS,sBAAwBvK,IAGpC7c,KAAKgnB,MAAMzK,YAAY,sBACvBvc,KAAK+mB,KAAKxK,YAAY,mBACtBvc,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,SAGlBjf,KAAKinB,UAAUpO,OAAOsC,yBAChBnb,EAAK+mB,KAAKpP,SAAS,qBAIvB3X,EAAKkf,MAAQ,SACblf,EAAKif,aAAa,UAClBjf,EAAKgnB,MAAMtQ,IAAI,SAAU,qBAOtBkE,kBACL5a,KAAKqgB,SAAWrgB,KAAKogB,QAAUpgB,KAAKiQ,qBAM/BuK,gBACLxa,KAAKyS,SAAS8J,YAAY,+BAMrBpE,gBACLnY,KAAKyS,SAASxI,SAAS,+BAMlBqV,oBACL,OAAOtf,KAAKkf,OAIhBhV,EAAK4c,IAAMA,GCjOX9f,IAAMuY,GAAa,WAEnB/W,aAIEsB,EAAUqJ,GACR,qCACIoM,OACJ,WACE,IAAIrV,EAAK4c,IACP9mB,KACAqe,GAAare,KAAqBuf,SCuIxC,SA7DI8H,GA8DF5e,EACA0F,6BAAmB,IAtDdnO,cAAewI,IAKfxI,aAAmBoM,EAAO,GAAIyR,IAK7B7d,UAAO,EAKPA,eAAgBwI,IAKhBxI,WAAYwI,IAKZxI,YAAawI,IAKbxI,mBAAgB,EAKhBA,kBAAe,GAKfA,mBAAgB,GAUhBA,WAAe,SAMrBA,KAAKsnB,QAAU9e,EAAEC,GAAU6B,QAC3BtK,KAAKsnB,QAAQnP,OAEb/L,EAAOpM,KAAKmO,QAASA,GAGrBnO,KAAKunB,SAAW/e,EAAE+U,OAGlBvd,KAAKwnB,eAGL1d,EAAUqJ,GAAG,4BAAqBjH,GAChClF,IAAM2L,EAAUnK,EAAE0D,EAAMnH,SAGtB/E,EAAKqgB,UACJ1N,EAAQV,GAAGjS,EAAKyS,WAChBtI,EAASnK,EAAKyS,SAAS,GAAIE,EAAQ,KAEpC3S,EAAKogB,UA1FbpZ,IAAM6W,GAA2B,CAC/B5W,SAAU,OACVwgB,OAAQ,iBAgGAC,wBACN1gB,IAiBI2gB,EACAC,EAlBEC,EAAe9d,EAAQyW,SAGvBsH,EAAgB9nB,KAAKyS,SAAS+N,SAG9BuH,EAAa/nB,KAAKigB,OAAO3V,QACzB0d,EAAaD,EAAWvH,SACxByH,EAAaC,SAASH,EAAWrR,IAAI,eAGrCyR,EAAYnoB,KAAKyS,SAASiR,aAAe,IAC3C0E,EAAaJ,EAAahoB,KAAKqoB,KAAoB,EAAbJ,EAGpCK,EAAatoB,KAAKyS,SAAS,GAAG/K,wBAAwBkP,IAK5D,GAA8B,WAA1B5W,KAAKmO,QAAQlH,SACf2gB,EAAgBE,EAChBH,EAAmB,WACd,GAA8B,QAA1B3nB,KAAKmO,QAAQlH,SACtB2gB,GAAiBQ,EAAa,EAC9BT,EAAmB,WACd,CAEL3gB,IAAMuhB,EAAgBV,EAAsC,EAAvB7nB,KAAKmO,QAAQsZ,OACjCc,EAAbH,IACFA,EAAaG,GAIfX,IACEK,EACAjoB,KAAKwoB,cAAgBR,GACpBA,EAAaF,GAAiB,GAGjC9gB,IAAMyhB,IACJR,GACCjoB,KAAKqoB,KAAO,GAAKL,GACjBA,EAAaF,GAAiB,GAE7BF,EAAgBa,IAClBb,EAAgBa,GAIlBzhB,IAAM0hB,EAAUJ,EAAaV,EACzBc,EAAU1oB,KAAKmO,QAAQsZ,OAEzBG,IAAkBU,EAAatoB,KAAKmO,QAAQsZ,QACnCiB,EAAUN,EAAapoB,KAAKmO,QAAQsZ,OAAUI,IAEvDD,IACEU,EACAF,EACApoB,KAAKmO,QAAQsZ,OACbI,IAKJF,EACE3nB,KAAKwoB,cAAgBR,EAAaA,EAAa,EAAIC,OAKvDjoB,KAAKyS,SAASiR,WAAWyE,GACzBnoB,KAAK2oB,MACFjF,WAAWyE,GACX3H,OAAO4H,GACP1R,IAAI,CACHkS,aAAchB,EAAgB,KAC9BiB,mBAAoB,UAAYlB,EAAmB,qBAOjDtH,kBACN,MAAsB,YAAfrgB,KAAKkf,OAAsC,WAAflf,KAAKkf,oBAMnCsI,mCACDxnB,KAAKqgB,UACPrgB,KAAKogB,QAGPpgB,KAAK8oB,cAAgB9oB,KAAKsnB,QAAQjjB,MAUlC2C,IAAM+hB,EAA6B,GACnC/oB,KAAKigB,OAASzX,IAGdxI,KAAKsnB,QAAQ7c,KAAK,UAAUtC,cAAMf,EAAOkC,GACvCtC,IAAMqe,EAAO/b,EAAO0f,aAAe,GAC7B9oB,EAAQoJ,EAAOpJ,MACfma,EAAW/Q,EAAO+Q,SAClB3B,EAAW1Y,EAAK8oB,gBAAkB5oB,EAExC6oB,EAAUhmB,KAAK,OACb7C,OACAmlB,WACAhL,WACA3B,QACAtR,IAGEsR,IACF1Y,EAAKipB,aAAe5D,EACpBrlB,EAAKwoB,cAAgBphB,GAGvBpH,EAAKigB,OAASjgB,EAAKigB,OAAO9N,IACxB,kDACGkI,EAAW,YAAc,KACzB3B,EAAW,YAAc,IAC1B,IAAI2M,cAIVrlB,KAAKkpB,UAAY1gB,wCACuBxI,6BAGxCA,KAAKyS,SAAWjK,EACd,gDAAgDxI,KAAKmO,6BACzCnO,KAAKsnB,QAAQhJ,KAAK,kBACrBte,0BAERwa,OACAiM,OAAOzmB,KAAKkpB,WAEflpB,KAAK2oB,MAAQngB,EAAE,wCACZ2T,SAASnc,KAAKyS,UACdgU,OAAOzmB,KAAKigB,QAEfzX,MAAMxI,eAAiBwL,SACvBxL,KAAKsnB,QAAQ6B,MAAMnpB,KAAKyS,UAGxBzS,KAAKqoB,KAAOH,SAASloB,KAAKsnB,QAAQhJ,KAAK,SAAW,KAE9Cte,KAAKqoB,MAAQ,IACfroB,KAAKqoB,KAAOroB,KAAKigB,OAAOte,OAER,EAAZ3B,KAAKqoB,OACProB,KAAKqoB,KAAO,IAMhBrhB,IAAMoU,EAAOpb,KACbA,KAAKigB,OAAO9M,GAAG,QAAS,WACtB,GAAmB,YAAfiI,EAAK8D,MAAT,CAIAlY,IAAMmZ,EAAQ3X,EAAExI,MACVoH,EAAQ+Y,EAAM/Y,QACdoH,EAAOua,EAAU3hB,GAEnBoH,EAAK6L,WAITe,EAAK8N,UAAU7D,KAAK7W,EAAK6W,MACzBjK,EAAKkM,QAAQjjB,IAAImK,EAAKtO,OACtBkb,EAAK6E,OAAOvG,WAAW,YACvByG,EAAM7B,KAAK,WAAY,IACvBlD,EAAKoN,cAAgBha,EAAKpH,MAC1BgU,EAAK0N,cAAgBta,EAAKtO,MAC1Bkb,EAAK6N,aAAeza,EAAK6W,KACzBjK,EAAKkM,QAAQva,QAAQ,UACrBqO,EAAKgF,YAIPpgB,KAAKyS,SAASU,GAAG,iBAAUjH,GACzBlF,IAAM2L,EAAUnK,EAAE0D,EAAMnH,QAItB4N,EAAQV,GAAG,sBACXU,EAAQV,GAAG,2BAKbjS,EAAK4a,yBAODO,yBACNnb,KAAKyS,SAAS8J,YAAY,uBAEP,YAAfvc,KAAKkf,QACPlf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,UAClBjf,KAAK2oB,MAAMjS,IAAI,aAAc,SAGZ,YAAf1W,KAAKkf,QACPlf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,UAGlBjf,KAAKyS,SAASiR,WAAW,IACzB1jB,KAAK2oB,MAAMjS,IAAI,CACbkS,aAAc,GACdpI,OAAQ,GACR9D,MAAO,oBASLuC,sBAAaxY,GACnBuW,GAAevW,EAAM,SAAUzG,KAAKsnB,QAAStnB,oBAMxC4a,kBACL5a,KAAKqgB,SAAWrgB,KAAKogB,QAAUpgB,KAAKiQ,qBAM/BA,2BACDjQ,KAAKqgB,WAITrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,QAClBjf,KAAK0nB,eACL1nB,KAAKyS,SAASxI,SAAS,oBACvBjK,KAAK2oB,MAAMxN,gCAAoBnb,EAAKmb,iCAM/BiF,4BACApgB,KAAKqgB,WAIVrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,SAClBjf,KAAK2oB,MAAMjS,IAAI,aAAc,IAC7B1W,KAAKyS,SACF8J,YAAY,oBACZtS,SAAS,uBACZjK,KAAK2oB,MAAMxN,gCAAoBnb,EAAKmb,iCAM/BmE,oBACL,OAAOtf,KAAKkf,OAIhBhV,EAAKmd,OAASA,GCvddrgB,IAAMuY,GAAa,cAEnB/W,aACE0B,EAAK0R,aAAa2D,OAAe,WAC/B,IAAIrV,EAAKmd,OAAOrnB,KAAMqe,GAAare,KAAMuf,SCL7C/W,aAEE0B,EAAK0R,SAAS,2BAA4B,WACxC,IAAI1R,EAAK0T,SAAS5d,QAIpBkK,EAAK0R,SAAS,mCAAoC,WAChD,IAAI1R,EAAK0T,SAAS5d,KAAM,CACtBme,YAAa,+BACbC,cAAe,uCC8EnB,SA1BIgL,GA2BF3gB,EACA0F,6BAAmB,IAnBdnO,aAAmBoM,EAAO,GAAIyR,IAK9B7d,kBAAe,EAgBpBA,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAE5B8B,EAAOpM,KAAKmO,QAASA,GAErBnO,KAAKqpB,MAAQrpB,KAAKyS,SAASyC,SAAS,KACpClV,KAAKspB,WAAa9gB,EAAE,0CAA0C2T,SAC5Dnc,KAAKyS,UAIPzL,IAAMuiB,EAAO/oB,OAAO4O,SAASma,KACzBA,GACFvpB,KAAKqpB,MAAMlhB,cAAMf,EAAOoiB,GACtB,OAAIhhB,EAAEghB,GAAKlL,KAAK,UAAYiL,IAC1BvpB,EAAKypB,YAAcriB,GACZ,MAQa,IAAtBpH,KAAKypB,aACPzpB,KAAKqpB,MAAMlhB,cAAMf,EAAOoiB,GACtB,OAAIhhB,EAAEghB,GAAK7R,SAAS,qBAClB3X,EAAKypB,YAAcriB,GACZ,KAQTpH,KAAKqpB,MAAM1nB,SAAgC,IAAtB3B,KAAKypB,cAC5BzpB,KAAKypB,YAAc,GAIrBzpB,KAAK0pB,YAGL3f,EAAQoJ,GACN,SACA3K,EAAEoU,2BAAe5c,EAAK2pB,wBAAwB,MAIhD3pB,KAAKqpB,MAAMlhB,cAAMlC,EAAGujB,GAClBxpB,EAAK4pB,aAAaJ,KArFxBxiB,IAAM6W,GAA2B,CAC/B9Q,QAAS,QACT8c,MAAM,gBA2FE3D,oBAAW4D,GACjB,YAAiC3nB,IAA1B2nB,EAAKxL,KAAK,0BAOXsL,sBAAaJ,YAIbO,IAEJ,GAAI/pB,EAAKkmB,WAAW4D,GAClB,OAAO,EAGT9pB,EAAKypB,YAAczpB,EAAKqpB,MAAMjiB,MAAMoiB,GACpCxpB,EAAK0pB,uBAVDI,EAAOthB,EAAEghB,GAcfM,EAAK3W,GAAG,QAAS4W,GAGY,UAAzB/pB,KAAKmO,QAAQpB,SACf+c,EAAK3W,GAAG,aAAc4W,GAIxBD,EAAK3W,GAAG,mBACN,GAA+C,KAA1C2W,EAAKxL,KAAK,SAAW,IAAI7U,QAAQ,KACpC,OAAO,kBAWLwV,sBAAaxY,EAAagM,EAAc0K,kBAAa,IAC3DH,GAAevW,EAAM,MAAOgM,EAAUzS,KAAMmd,iBAMtCuM,gCACN1pB,KAAKqpB,MAAMlhB,cAAMf,EAAOoiB,GACtBxiB,IAAM8iB,EAAOthB,EAAEghB,GACTQ,EAAWF,EAAKxL,KAAK,SAAW,GAGlClX,IAAUpH,EAAKypB,aAAgBzpB,EAAKkmB,WAAW4D,IAcjDA,EAAKvN,YAAY,mBACjB/T,EAAEwhB,GAAU7R,SAdP2R,EAAKnS,SAAS,qBACjB3X,EAAKif,aAAa,SAAUjf,EAAKyS,SAAU,CACzCrL,MAAOpH,EAAKypB,YACZ3d,GAAIke,EAASC,OAAO,KAEtBjqB,EAAKif,aAAa,OAAQ6K,GAE1BA,EAAK7f,SAAS,oBAGhBzB,EAAEwhB,GAAUxP,OACZxa,EAAK2pB,wCAWHA,gCAEN,IAA0B,IAAtB3pB,KAAKypB,YAAT,CASAziB,IAAMkjB,EAAalqB,KAAKqpB,MAAMhU,GAAGrV,KAAKypB,aAEtC,IAAIzpB,KAAKkmB,WAAWgE,GAApB,CAIAljB,IAAMmjB,EAAkBD,EAAW/Q,SAEnCnZ,KAAKspB,WAAW5S,IAAI,CAClBG,KACEsT,EAAgBtT,KAChB7W,KAAKyS,SAAS,GAAG2X,WACjBpqB,KAAKyS,SAAS,GAAG/K,wBAAwBmP,UAE3C6F,MAAUwN,EAAWxG,0BAtBrB1jB,KAAKspB,WAAW5S,IAAI,CAClBG,KAAM,EACN6F,MAAO,kBA2BN2N,iBACqB,IAAtBrqB,KAAKypB,cAILzpB,KAAKqpB,MAAM1nB,OAAS3B,KAAKypB,YAAc,EACzCzpB,KAAKypB,cACIzpB,KAAKmO,QAAQ0b,OACtB7pB,KAAKypB,YAAc,GAGrBzpB,KAAK0pB,2BAMAviB,iBACqB,IAAtBnH,KAAKypB,cAIc,EAAnBzpB,KAAKypB,YACPzpB,KAAKypB,cACIzpB,KAAKmO,QAAQ0b,OACtB7pB,KAAKypB,YAAczpB,KAAKqpB,MAAM1nB,OAAS,GAGzC3B,KAAK0pB,2BAOAlP,cAAKpT,eACgB,IAAtBpH,KAAKypB,cAILxkB,EAASmC,GACXpH,KAAKypB,YAAcriB,EAEnBpH,KAAKqpB,MAAMlhB,cAAM7E,EAAGkmB,GAClB,GAAIA,EAAI1d,KAAO1E,EAEb,OADApH,EAAKypB,aACE,IAKbzpB,KAAK0pB,2BAOAlC,mCACC8C,EAAWtqB,KAAKqpB,MAChBkB,EAAWvqB,KAAKyS,SAASyC,SAAS,KAClCsV,EAAiBF,EAAS9f,MAC1BigB,EAAiBF,EAAS/f,MAEhC,IAAK+f,EAAS5oB,OAKZ,OAJA3B,KAAKypB,aAAe,EACpBzpB,KAAKqpB,MAAQkB,OACbvqB,KAAK2pB,uBAMPY,EAASpiB,cAAMf,EAAOoiB,GAEhBgB,EAAe/gB,QAAQ+f,GAAO,IAChCxpB,EAAK4pB,aAAaJ,IAEQ,IAAtBxpB,EAAKypB,YACPzpB,EAAKypB,YAAc,EACVriB,GAASpH,EAAKypB,aACvBzpB,EAAKypB,iBAMXa,EAASniB,cAAMf,EAAOoiB,GAEhBiB,EAAehhB,QAAQ+f,GAAO,IAC5BpiB,EAAQpH,EAAKypB,YACfzpB,EAAKypB,cACIriB,IAAUpH,EAAKypB,cACxBzpB,EAAKypB,YAAc,MAKzBzpB,KAAKqpB,MAAQkB,EAEbvqB,KAAK0pB,aAITxf,EAAKkf,IAAMA,GC7WXpiB,IAAMuY,GAAa,WAEnB/W,aACE0B,EAAK0R,aAAa2D,OAAe,WAC/B,IAAIrV,EAAKkf,IAAIppB,KAAMqe,GAAare,KAAMuf,SCsFxC,SA1BImL,GA2BFjiB,EACA0F,6BAAmB,IAnBdnO,aAAmBoM,EAAO,GAAIyR,IAK7B7d,cAAU,EAgBhBA,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAE5B8B,EAAOpM,KAAKmO,QAASA,GAErBnO,KAAKiH,SAAWjH,KAAKyS,SAASkF,SAAS,qBACnC,QACA,OAEA3X,KAAKyS,SAASkF,SAAS,qBACzB3X,KAAKkf,MAAQ,SACJlf,KAAKyS,SAASkF,SAAS,qBAEvB3X,KAAK2qB,YADd3qB,KAAKkf,MAAQ,SAIblf,KAAKkf,MAAQ,SAIfnV,EAAQoJ,GACN,SACA3K,EAAEoU,oBACI5c,EAAK2qB,aAGH3qB,EAAK4qB,UAAY5qB,EAAKmO,QAAQyc,UAChCpiB,EAAE6T,cACFrc,EAAK4qB,SAAU,EACfpiB,EAAEmU,gBAIC3c,EAAKyS,SAASkF,SAAS,uBAC1B3X,EAAKkf,MAAQ,WAELlf,EAAK4qB,SAA0B,WAAf5qB,EAAKkf,QAE3Blf,EAAKyS,SAASkF,SAAS,qBACzBnP,EAAEwT,cACFhc,EAAK4qB,SAAU,EACfpiB,EAAEgU,aAEFhU,EAAE,iBAAiB4K,IAAI,0BAAepT,EAAKogB,WAE3CpgB,EAAKkf,MAAQ,WAGhB,MAILlf,KAAKyS,SAAShI,KAAK,uBAAuBtC,cAAMlC,EAAGma,GACjD5X,EAAE4X,GAAOjN,GAAG,0BAAenT,EAAKogB,YAGlCpgB,KAAK6qB,eA1FT7jB,IAAM6W,GAA2B,CAC/B+M,SAAS,EACTE,OAAO,gBA8FCH,qBACN,OAA0B,MAAnB5gB,EAAQ2S,sBAMTmO,wBAEN7jB,IAGI+jB,EACA1H,EACAE,EACAyH,EANE5P,EAAOpb,KAOTirB,EAAwC,KACxCC,GAAe,EAGbC,EAAiB,GAEvB,SAASC,EAAYC,GACnBrkB,IACMskB,EAAe,cAClB,GAF8C,UAAlBlQ,EAAKnU,UAAwB,EAAI,GAEhCokB,uBAIhCjQ,EAAK3I,SAASiE,IACZ,wBACc4U,wCAIlB,SAASC,IACPnQ,EAAK3I,SAAS,GAAGuC,MAAMyG,UAAY,GACnCL,EAAK3I,SAAS,GAAGuC,MAAM0G,gBAAkB,GACzCN,EAAK3I,SAAS,GAAGuC,MAAM+F,WAAa,GACpCK,EAAK3I,SAAS,GAAGuC,MAAMwW,iBAAmB,GAG5C,SAASC,IACP,OAAOrQ,EAAK3I,SAASiK,QAAU,GAGjC,SAASgP,EAAcC,GACrB,OAAOpV,KAAKwP,IACVxP,KAAKC,IACS,YAAZyU,EACID,EAAcW,EACdF,IAAqBT,EAAcW,EACvC,GAEFF,KAIJ,SAASG,EAAe1f,GACtB,GAAI+e,EAAS,CACX5jB,IAAIwkB,EAAU3f,EAAqB4f,eAAe,GAAGxI,MAC/B,UAAlBlI,EAAKnU,WACP4kB,EAAS7hB,EAAM0S,QAAUmP,GAG3B7kB,IAAM+kB,EAAiBL,EAAcG,GAAUJ,IAE/CP,GAAe,EACflkB,IAAMglB,EAAef,EACrBA,EAAU,KAEW,YAAjBe,EACED,EAAiB,KACnBR,IACAnQ,EAAKnL,QAELsb,IAGmB,IAAjBQ,GACFR,IACAnQ,EAAKgF,SAELmL,IAIJ/iB,EAAEmU,oBAEFuO,GAAe,EAGjBlhB,EAAMkJ,IAAI,CAER+Y,UAAWC,EACXC,SAAUP,EAEVQ,YAAaF,IAIjB,SAASA,EAAgBhgB,GACvB7E,IAAIwkB,EAAU3f,EAAqB6W,QAAQ,GAAGO,MACxB,UAAlBlI,EAAKnU,WACP4kB,EAAS7hB,EAAM0S,QAAUmP,GAG3B7kB,IAAMqlB,EAAUngB,EAAqB6W,QAAQ,GAAGS,MAEhD,GAAIyH,EACFG,EAAYM,EAAcG,SACrB,GAAIX,EAAc,CACvBlkB,IAAMslB,EAAQ/V,KAAKuI,IAAI+M,EAASxI,GAC1BkJ,EAAQhW,KAAKuI,IAAIuN,EAAS9I,GACd,EAEd+I,GAAqBC,GAFP,GAGhBvB,EAAca,EACdZ,EAAyB,WAAf7P,EAAK8D,MAAqB,UAAY,UAChD1W,EAAEgU,aACF4O,EAAYM,EAAcG,KACjBS,GAPO,GAAA,EAOeC,GAC/BX,KAKN,SAASY,EAAiBtgB,GACxBmX,EAAenX,EAAqB6W,QAAQ,GAAGO,MACzB,UAAlBlI,EAAKnU,WACPoc,EAAcrZ,EAAM0S,QAAU2G,GAGhCE,EAAerX,EAAqB6W,QAAQ,GAAGS,MAE5B,WAAfpI,EAAK8D,QAESiM,EAAd9H,GACA0H,IAAwByB,KAM5BtB,GAAe,EAEflhB,EAAMmJ,GAAG,CACP8Y,UAAWC,EACXC,SAAUP,EACVQ,YAAaF,KAWblsB,KAAKmO,QAAQ2c,QANVC,IACH/gB,EAAMmJ,GAAG,aAAcqZ,GACvBzB,EAAsByB,kBAapBvN,sBAAaxY,GACnBuW,GAAevW,EAAM,SAAUzG,KAAKyS,SAAUzS,oBAMxCmb,yBACFnb,KAAKyS,SAASkF,SAAS,qBACzB3X,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,YAElBjf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,yBAOdoB,kBACN,MAAsB,YAAfrgB,KAAKkf,OAAsC,WAAflf,KAAKkf,oBAMnCjP,2BACDjQ,KAAKqgB,WAITrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,QAEbjf,KAAKmO,QAAQyc,SAChB5gB,EAAMC,6BAA6BjK,eAGrCA,KAAKyS,SACF8J,YAAY,qBACZtS,SAAS,oBACTkR,gCAAoBnb,EAAKmb,kBAEvBnb,KAAK2qB,cAAe3qB,KAAKmO,QAAQyc,UACpC5qB,KAAK4qB,SAAU,EACfpiB,EAAEwT,cAAc5I,IAAI,0BAAepT,EAAKogB,UACxC5X,EAAEgU,6BAOC4D,4BACApgB,KAAKqgB,WAIVrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,SAEbjf,KAAKmO,QAAQyc,SAChB5gB,EAAMuS,gCAAgCvc,eAGxCA,KAAKyS,SACFxI,SAAS,qBACTsS,YAAY,oBACZpB,gCAAoBnb,EAAKmb,kBAExBnb,KAAK4qB,UACPpiB,EAAE6T,cACFrc,KAAK4qB,SAAU,EACfpiB,EAAEmU,+BAOC/B,kBACL5a,KAAKqgB,SAAWrgB,KAAKogB,QAAUpgB,KAAKiQ,qBAM/BqP,oBACL,OAAOtf,KAAKkf,OAIhBhV,EAAKwgB,OAASA,GC/Zd1jB,IAAMuY,GAAa,cAQnB/W,aACE0B,EAAK0R,aAAa2D,OAAe,WAC/BvY,IAAMyL,EAAWjK,EAAExI,MACbmO,EAAUkQ,GAAare,KAAMuf,IAC7B9W,EAAW0F,EAAQpJ,cAClBoJ,EAAQpJ,OAEfiC,IAAMylB,EAAUjkB,EAAEC,GAAU6B,QACtB4S,EAAW,IAAIhT,EAAKwgB,OAAO+B,EAASte,GAE1CsE,EAASU,GAAG,0BAAe+J,EAAStC,eCrBxC5T,IAAMoD,GAAiC,GAevC,SAASsiB,GAAMjmB,EAAciF,GAK3B,GAJIxG,EAAYkF,GAAU3D,MACxB2D,GAAU3D,GAAQ,IAGhBvB,EAAYwG,GACd,OAAOtB,GAAU3D,GAGnB2D,GAAU3D,GAAM1D,KAAK2I,GAOvB,SAASihB,GAAQlmB,GACXvB,EAAYkF,GAAU3D,KAIrB2D,GAAU3D,GAAM9E,QAIRyI,GAAU3D,GAAMyL,OAE7BxG,GC2EA,SArBIkhB,GAsBFnkB,EACA0F,6BAAmB,IAddnO,aAAmBoM,EAAO,GAAIyR,IAK9B7d,WAAe,SAKdA,aAAS,EAMfA,KAAKyS,SAAWjK,EAAEC,GAAU6B,QAGvBH,EAASzK,SAASkJ,KAAM5I,KAAKyS,SAAS,MACzCzS,KAAKymB,QAAS,EACdzc,EAAMyc,OAAOzmB,KAAKyS,WAGpBrG,EAAOpM,KAAKmO,QAASA,GAGrBnO,KAAKyS,SAAShI,KAAK,wBAAwBtC,cAAMlC,EAAG4mB,GAClDrkB,EAAEqkB,GAAQ1Z,GAAG,mBACXnT,EAAKif,aAAa,UAEdjf,EAAKmO,QAAQ2e,eACf9sB,EAAKogB,YAMXpgB,KAAKyS,SAAShI,KAAK,yBAAyBtC,cAAMlC,EAAG8mB,GACnDvkB,EAAEukB,GAAS5Z,GAAG,mBACZnT,EAAKif,aAAa,WAEdjf,EAAKmO,QAAQ6e,gBACfhtB,EAAKogB,YAMXpgB,KAAKyS,SAAShI,KAAK,uBAAuBtC,cAAMlC,EAAGma,GACjD5X,EAAE4X,GAAOjN,GAAG,0BAAenT,EAAKogB,YAzFtCpZ,IA4BIkV,GA5BE2B,GAA2B,CAC/BoP,SAAS,EACTrC,SAAS,EACTsC,OAAO,EACPC,YAAY,EACZL,eAAe,EACfE,gBAAgB,EAChBI,iBAAiB,GAMfC,GAA6B,KAK3BC,GAAY,eAKdC,IAAe,eA0ETtO,sBAAaxY,GACnBuW,GAAevW,EAAM,SAAUzG,KAAKyS,SAAUzS,oBAMxCwtB,oBACN,GAAKH,GAAL,CAIArmB,IAAMyL,EAAW4a,GAAY5a,SACvBgb,EAAShb,EAASyC,SAAS,sBAC3BqL,EAAW9N,EAASyC,SAAS,wBAC7BwY,EAAWjb,EAASyC,SAAS,wBAGnCzC,EAAS+N,OAAO,IAChBD,EAASC,OAAO,IAEhBxZ,IAAM8gB,EAAgBrV,EAAS+N,SAC/B/N,EAASiE,IAAI,CACXE,KAAS7M,EAAQyW,SAAWsH,GAAiB,OAC7CtH,OAAWsH,SAIbvH,EAASkD,YACPqE,GACG2F,EAAOhK,eAAiB,IACxBiK,EAASjK,eAAiB,mBAOzBkK,2BACFntB,OAAO4O,SAASma,KAAK5L,UAAU,GAAGlU,QAAQ,eAAiB,GAC7D4jB,GAAajN,OAAM,iBAQfwN,sBAAa1hB,GAEjB1D,EAAE0D,EAAMnH,QAAuB4S,SAAS,iBACxC0V,IAEAA,GAAYjN,sBAORjF,yBACFnb,KAAKyS,SAASkF,SAAS,qBACzB3X,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,YAElBjf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,UAClBjf,KAAKyS,SAAS0F,OAGTuU,GAAMY,IAAW3rB,QAAW0rB,KAAeE,KAC9C/kB,EAAEmU,eACF4Q,IAAe,GAGjBxjB,EAAQmJ,IAAI,SAAU1K,EAAEoU,SAAS5c,KAAKwtB,SAAU,MAE5CxtB,KAAKmO,QAAQif,iBACfptB,KAAK6tB,yBAQHC,6BAmCN,GAlCAT,GAAcrtB,KAETutB,KACH/kB,EAAEgU,aACF+Q,IAAe,GAGjBvtB,KAAKyS,SAAS+H,OACdxa,KAAKwtB,WAELzjB,EAAQoJ,GAAG,SAAU3K,EAAEoU,SAAS5c,KAAKwtB,SAAU,MAG/CxtB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,QAClBjf,KAAKyS,SACFxI,SAAS,oBACTkR,gCAAoBnb,EAAKmb,kBAI1Be,GADGA,IACQ1T,EAAEwT,YAAY,MAIvBhc,KAAKmO,QAAQ+e,MACfhR,GAAShJ,IAAI,QAASlT,KAAK4tB,cAE3B1R,GAAS/I,GAAG,QAASnT,KAAK4tB,cAI5B1R,GAASxF,IAAI,UAAW1W,KAAKmO,QAAQyc,QAAU,GAAK,GAEhD5qB,KAAKmO,QAAQ8e,QAAS,CAGxB5lB,IAAIkiB,EAAO/oB,OAAO4O,SAASma,KAAK5L,UAAU,IACP,EAA/B4L,EAAK9f,QAAQ,iBACf8f,EAAOA,EAAKvjB,QAAQ,oBAAqB,KAKzCxF,OAAO4O,SAASma,KADdA,EACwBA,IACH,EAArBA,EAAK9f,QAAQ,KAAY,IAAM,mBAGV,cAGzBM,EAAQoJ,GAAG,aAAcnT,KAAK2tB,gCAO1BtN,kBACN,MAAsB,YAAfrgB,KAAKkf,OAAsC,WAAflf,KAAKkf,oBAMnCjP,2BACDjQ,KAAKqgB,WAMNgN,KACwB,YAAtBA,GAAYnO,OAA6C,WAAtBmO,GAAYnO,QAClDwN,GAAMY,IAAW3rB,OAEjB+qB,GAAMY,qBAAiBttB,EAAK8tB,WAK9B9tB,KAAK8tB,wBAMA1N,eAAM2N,8BAAc,GAOzBxsB,sBACOvB,EAAKqgB,WAIVgN,GAAc,KAEdrtB,EAAKkf,MAAQ,UACblf,EAAKif,aAAa,UAGbyN,GAAMY,IAAW3rB,QAAUua,KAC9B1T,EAAE6T,cACFH,GAAW,KAGX1T,EAAE,iBAAiBkO,IAAI,UAAW,MAGpC1W,EAAKyS,SACF8J,YAAY,oBACZpB,gCAAoBnb,EAAKmb,kBAExBnb,EAAKmO,QAAQ8e,UAAYP,GAAMY,IAAW3rB,SACvCosB,GACHvtB,OAAOysB,QAAQe,OAGjBjkB,EAAQmJ,IAAI,aAAclT,EAAK2tB,kBAKjCpsB,sBACEorB,GAAQW,KACP,sBAOA1S,kBACL5a,KAAKqgB,SAAWrgB,KAAKogB,QAAUpgB,KAAKiQ,qBAM/BqP,oBACL,OAAOtf,KAAKkf,oBAMP2O,mBACD7tB,KAAKymB,QACPzmB,KAAKyS,SAASjH,SAGXkhB,GAAMY,IAAW3rB,QAAW0rB,KAC3BnR,KACF1T,EAAE6T,cACFH,GAAW,MAGTqR,KACF/kB,EAAEmU,eACF4Q,IAAe,kBAQd/F,wBACLxnB,KAAKwtB,YC/YT1jB,EAAUqJ,GAAG,mBAAYjH,GAErBmhB,IACAA,GAAYlf,QAAQgf,YACE,WAAtBE,GAAYnO,OACyB,KAApChT,EAAwB+hB,SAEzBZ,GAAYjN,UAIhBlW,EAAK0iB,OAASA,GC9Bd5lB,IAAMuY,GAAa,cACbiD,GAAW,eAajBha,aACEsB,EAAUqJ,GAAG,YAAaoM,OAAe,WACvCvY,IAAMmH,EAAUkQ,GAAare,KAAqBuf,IAC5C9W,EAAW0F,EAAQpJ,cAClBoJ,EAAQpJ,OAEfiC,IAAMknB,EAAU1lB,EAAEC,GAAU6B,QACxB4S,EAAWgR,EAAQ1f,KAAKgU,IAEvBtF,IACHA,EAAW,IAAIhT,EAAK0iB,OAAOsB,EAAS/f,GACpC+f,EAAQ1f,KAAKgU,GAAUtF,IAGzBA,EAASjN,WC6EbjJ,IAAMmnB,GAAyB,CAC7B9I,KAAM,GACN+I,MAAM,EACNhO,OAAO,EAEPiO,sBAGIxQ,GAA2B,CAC/ByQ,MAAO,GACP3Z,QAAS,GACT4Z,QAAS,GACTC,gBAAgB,EAChBC,SAAU,GACVxB,SAAS,EACTrC,SAAS,EACTsC,OAAO,EACPC,YAAY,EACZC,iBAAiB,EAEjBsB,oBAEAC,sBAEAC,qBAEAC,uBC7EIhR,GAA2B,CAC/BiR,YAAa,KACb7B,SAAS,EACTC,QD6EFhjB,EAAK6kB,OAAS,SAAU5gB,WAItBhG,GAFAgG,EAAU/B,EAAO,GAAIyR,GAAiB1P,IAEzBogB,iBAAWjrB,EAAGrC,GACzBkN,EAAQogB,QAASjrB,GAAK8I,EAAO,GAAI+hB,GAAgBltB,KAInDoG,IAAI2nB,EAAc,aACd7gB,EAAQogB,wBAAS5sB,SACnBqtB,EAAc,mCACZ7gB,EAAQqgB,eAAiB,+BAAiC,SAG5DrmB,EAAKgG,EAAQogB,iBAAUtoB,EAAGhF,GACxB+tB,GACE,qFAEE/tB,EAAOmtB,KAAO,gBAAkB,SAC7BntB,gBAGT+tB,GAAe,UAIjBhoB,IAAMioB,EACJ,2BAA2B9gB,iBAC1BA,EAAQmgB,wCAC6BngB,iBAClC,KACHA,EAAQwG,4CAC+BxG,mBACpC,IACJ6gB,EACA,SAGI9R,EAAW,IAAIhT,EAAK0iB,OAAOqC,EAAM,CACrChC,QAAS9e,EAAQ8e,QACjBrC,QAASzc,EAAQyc,QACjBsC,MAAO/e,EAAQ+e,MACfC,WAAYhf,EAAQgf,WACpBC,gBAAiBjf,EAAQif,kBAmC3B,iBA/BIjf,EAAQogB,wBAAS5sB,QACnBub,EAASzK,SACNhI,KAAK,kCACLtC,cAAMf,EAAOnG,GACZuH,EAAEvH,GAAQkS,GAAG,mBACXhF,EAAQogB,QAASnnB,GAAOinB,QAASnR,GAE7B/O,EAAQogB,QAASnnB,GAAOgZ,OAC1BlD,EAASkD,YAOnBlD,EAASzK,SACNU,GAAG,8BACFhF,EAAQugB,OAAQxR,KAEjB/J,GAAG,gCACFhF,EAAQwgB,SAAUzR,KAEnB/J,GAAG,+BACFhF,EAAQygB,QAAS1R,KAElB/J,GAAG,gCACFhF,EAAQ0gB,SAAU3R,KAGtBA,EAASjN,OAEFiN,IC3JPiQ,YAAY,EACZH,gBAAgB,GCSZnP,GAA2B,CAC/BiR,YAAa,KACbI,WAAY,SACZjC,SAAS,EACTC,QDVFhjB,EAAKilB,MAAQ,SACX9J,EACAiJ,EACAc,EACAjhB,GAmBA,OAjBIrJ,EAAWwpB,KACbngB,EAAUihB,EACVA,EAAYd,EACZA,EAAQ,IAGNppB,EAAYkqB,KAEdA,gBAGElqB,EAAYiJ,KACdA,EAAU,IAGZA,EAAU/B,EAAO,GAAIyR,GAAiB1P,GAE/BjE,EAAK6kB,OAAO,CACjBT,MAAOA,EACP3Z,QAAS0Q,EACTkJ,QAAS,CACP,CACElJ,KAAMlX,EAAQ2gB,YACdV,MAAM,EACNhO,MAAOjS,EAAQ6e,eACfqB,QAASe,IAGbX,SAAU,oBACVxB,QAAS9e,EAAQ8e,QACjBC,MAAO/e,EAAQ+e,MACfC,WAAYhf,EAAQgf,eC1BtBA,YAAY,EACZL,eAAe,EACfE,gBAAgB,GCiBZnP,GAA2B,CAC/BiR,YAAa,KACbI,WAAY,SACZjC,SAAS,EACTC,QDlBFhjB,EAAK6iB,QAAU,SACb1H,EACAiJ,EACAc,EACAC,EACAlhB,GAyBA,OAvBIrJ,EAAWwpB,KACbngB,EAAUkhB,EACVA,EAAWD,EACXA,EAAYd,EACZA,EAAQ,IAGNppB,EAAYkqB,KAEdA,gBAGElqB,EAAYmqB,KAEdA,gBAGEnqB,EAAYiJ,KACdA,EAAU,IAGZA,EAAU/B,EAAO,GAAIyR,GAAiB1P,GAE/BjE,EAAK6kB,OAAO,CACjBT,MAAOA,EACP3Z,QAAS0Q,EACTkJ,QAAS,CACP,CACElJ,KAAMlX,EAAQ+gB,WACdd,MAAM,EACNhO,MAAOjS,EAAQ2e,cACfuB,QAASgB,GAEX,CACEhK,KAAMlX,EAAQ2gB,YACdV,MAAM,EACNhO,MAAOjS,EAAQ6e,eACfqB,QAASe,IAGbX,SAAU,sBACVxB,QAAS9e,EAAQ8e,QACjBC,MAAO/e,EAAQ+e,MACfC,WAAYhf,EAAQgf,eC/BtBA,YAAY,EACZL,eAAe,EACfE,gBAAgB,EAChBhiB,KAAM,OACNskB,UAAW,EACXC,aAAc,GACdC,gBAAgB,GAGlBtlB,EAAKulB,OAAS,SACZC,EACApB,EACAc,EACAC,EACAlhB,GAEIrJ,EAAWwpB,KACbngB,EAAUkhB,EACVA,EAAWD,EACXA,EAAYd,EACZA,EAAQ,IAGNppB,EAAYkqB,KAEdA,gBAGElqB,EAAYmqB,KAEdA,gBAGEnqB,EAAYiJ,KACdA,EAAU,IAKZnH,IAAM2N,EACJ,gCACC+a,yCAA+CA,aAAkB,KAChD,UALpBvhB,EAAU/B,EAAO,GAAIyR,GAAiB1P,IAK3BnD,+DAEHmD,qBAEAA,EAAQmhB,UAAY,cAAgBnhB,EAAQmhB,UAAY,IAAM,SAEhE,KACc,aAAjBnhB,EAAQnD,gDAEHmD,EAAQmhB,UAAY,cAAgBnhB,EAAQmhB,UAAY,IAAM,QAC5DnhB,6BACJ,IACJ,SAYF,OAAOjE,EAAK6kB,OAAO,OACjBT,UACA3Z,EACA4Z,QAAS,CACP,CACElJ,KAAMlX,EAAQ+gB,WACdd,MAAM,EACNhO,MAAOjS,EAAQ2e,cACfuB,iBAlBiBU,GACrB/nB,IAAM9G,EAAQ6uB,EAAOtc,SAAShI,KAAK,yBAAyBpG,MAC5DgrB,EAASnvB,EAAO6uB,KAkBd,CACE1J,KAAMlX,EAAQ2gB,YACdV,MAAM,EACNhO,MAAOjS,EAAQ6e,eACfqB,iBAnBkBU,GACtB/nB,IAAM9G,EAAQ6uB,EAAOtc,SAAShI,KAAK,yBAAyBpG,MAC5D+qB,EAAUlvB,EAAO6uB,MAoBjBN,SAAU,qBACVxB,QAAS9e,EAAQ8e,QACjBC,MAAO/e,EAAQ+e,MACfC,WAAYhf,EAAQgf,WACpBuB,gBAASK,GAEP/nB,IAAM2d,EAASoK,EAAOtc,SAAShI,KAAK,yBACpCP,EAAKyc,iBAAiBhC,GAGtBA,EAAO,GAAG+B,QAGW,aAAjBvY,EAAQnD,OAAkD,IAA3BmD,EAAQqhB,gBACzC7K,EAAOxR,GAAG,mBAAYjH,GACpB,GAAyC,KAApCA,EAAwB+hB,QAAgB,CAC3CjnB,IAAM9G,EAAQ6uB,EAAOtc,SAAShI,KAAK,yBAAyBpG,MAO5D,OANA+qB,EAAUlvB,EAAO6uB,GAEb5gB,EAAQ6e,gBACV+B,EAAO3O,SAGF,KAQQ,aAAjBjS,EAAQnD,MACV2Z,EAAOxR,GAAG,0BAAe4b,EAAOvH,iBAI9BrZ,EAAQmhB,WACVP,EAAOvH,mBC7Hb,SA1BImI,GA2BFlnB,EACA0F,kBAAmB,IAddnO,aAAmBoM,EAAO,GAAIyR,IAK7B7d,WAAe,SAKfA,eAAiB,KAMvBA,KAAK2S,QAAUnK,EAAEC,GAAU6B,QAE3B8B,EAAOpM,KAAKmO,QAASA,GAGrBnO,KAAKyS,SAAWjK,mCACmBA,EAAE+U,YACjCvd,KAAKmO,0BAEPgO,SAASzc,SAASkJ,MAIpB5B,IAAMoU,EAAOpb,KACbA,KAAK2S,QACFQ,GAAG,wBAAyB,SAAUjH,GACjCkP,EAAK8K,WAAWlmB,OAIfgjB,GAAQ9W,KAIb+W,GAAS/W,GAETkP,EAAKnL,UAENkD,GAAG,sBAAuB,SAAUjH,GAC/BkP,EAAK8K,WAAWlmB,OAIfgjB,GAAQ9W,IAIbkP,EAAKgF,UAENjN,GAAG2P,GAAa,SAAU5W,GACrBkP,EAAK8K,WAAWlmB,OAIpBijB,GAAS/W,KAhFjBlF,IAAM6W,GAA2B,CAC/B5W,SAAU,OACV4V,MAAO,EACPlI,QAAS,iBAqFDuR,oBAAW1f,GACjB,OACGA,EAA6B6T,eACElY,IAAhCqG,EAAEhC,GAAS8X,KAAK,0BAOZqM,qBACN,OAAyB,KAAlB5gB,EAAQ2S,sBAMT0O,uBACN/jB,IAAIuoB,EACAC,EAGEC,EAAc9vB,KAAK2S,QAAQ,GAAGjL,wBAG9BqoB,EAAe/vB,KAAK2qB,YAAc,GAAK,GAGvCqF,EAAehwB,KAAKyS,SAAS,GAAGwd,YAChCC,EAAgBlwB,KAAKyS,SAAS,GAAG0d,aAGnClpB,EAAqBjH,KAAKmO,QAAQlH,SA4BtC,OAzBiB,SAAbA,IASAA,EAPA6oB,EAAYlZ,IACVkZ,EAAYtP,OACZuP,EACAG,EACA,EACFnmB,EAAQyW,SAEG,SACFuP,EAAeG,EAAgB,EAAIJ,EAAYlZ,IAC7C,MACFmZ,EAAeC,EAAe,EAAIF,EAAYjZ,KAC5C,OAEXiZ,EAAYpT,MAAQqT,EAAeC,EAAe,EAClDjmB,EAAQ2S,QAAUoT,EAAYjZ,KAEnB,QAEA,UAKP5P,GACN,IAAK,SACH2oB,EAAmBI,EAAe,GAApB,EACdH,EAAYC,EAAYtP,OAAS,EAAIuP,EACrC/vB,KAAKyS,SAAS8I,gBAAgB,cAC9B,MAEF,IAAK,MACHqU,EAAmBI,EAAe,GAApB,EACdH,GACG,GAAKK,EAAgBJ,EAAYtP,OAAS,EAAIuP,GACjD/vB,KAAKyS,SAAS8I,gBAAgB,iBAC9B,MAEF,IAAK,OACHqU,GAAc,GAAKI,EAAeF,EAAYpT,MAAQ,EAAIqT,GAC1DF,EAAkBK,EAAgB,GAArB,EACblwB,KAAKyS,SAAS8I,gBAAgB,gBAC9B,MAEF,IAAK,QACHqU,EAAaE,EAAYpT,MAAQ,EAAIqT,EACrCF,EAAkBK,EAAgB,GAArB,EACblwB,KAAKyS,SAAS8I,gBAAgB,eAIlCvU,IAAMopB,EAAepwB,KAAK2S,QAAQwG,SAElCnZ,KAAKyS,SAASiE,IAAI,CAChBE,IAAQwZ,EAAaxZ,IAAMkZ,EAAYtP,OAAS,OAChD3J,KAASuZ,EAAavZ,KAAOiZ,EAAYpT,MAAQ,OACjD2T,cAAkBT,OAClBhH,aAAiBiH,uBAQb5Q,sBAAaxY,GACnBuW,GAAevW,EAAM,UAAWzG,KAAK2S,QAAS3S,oBAMxCmb,yBACFnb,KAAKyS,SAASkF,SAAS,sBACzB3X,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,YAElBjf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,yBAOdoB,kBACN,MAAsB,YAAfrgB,KAAKkf,OAAsC,WAAflf,KAAKkf,oBAMlC4O,6BACN9tB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,QAElBjf,KAAKyS,SACFxI,SAAS,qBACTkR,gCAAoBnb,EAAKmb,gCAOvBlL,cAAK9B,cACV,IAAInO,KAAKqgB,SAAT,CAIArZ,IAAMspB,EAAalkB,EAAO,GAAIpM,KAAKmO,SAE/BA,GACF/B,EAAOpM,KAAKmO,QAASA,GAInBmiB,EAAW3b,UAAY3U,KAAKmO,QAAQwG,SACtC3U,KAAKyS,SAAS3J,KAAK9I,KAAKmO,QAAQwG,SAGlC3U,KAAKorB,cAEDprB,KAAKmO,QAAQ0O,MACf7c,KAAKuwB,UAAYhvB,6BAAiBvB,EAAK8tB,UAAU9tB,KAAKmO,QAAQ0O,QAE9D7c,KAAKuwB,UAAY,KACjBvwB,KAAK8tB,yBAOF1N,4BACDpgB,KAAKuwB,YACPjgB,aAAatQ,KAAKuwB,WAClBvwB,KAAKuwB,UAAY,MAGdvwB,KAAKqgB,WAIVrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,SAElBjf,KAAKyS,SACF8J,YAAY,qBACZpB,gCAAoBnb,EAAKmb,iCAMvBP,kBACL5a,KAAKqgB,SAAWrgB,KAAKogB,QAAUpgB,KAAKiQ,qBAM/BqP,oBACL,OAAOtf,KAAKkf,OAIhBhV,EAAKylB,QAAUA,GChWf3oB,IAAMuY,GAAa,eACbiD,GAAW,gBAEjBha,aAEEsB,EAAUqJ,GAAG,2BAA4BoM,OAAe,WACtDvY,IAAM2L,EAAUnK,EAAExI,MACdkd,EAAWvK,EAAQnE,KAAKgU,IAEvBtF,IACHA,EAAW,IAAIhT,EAAKylB,QAClB3vB,KACAqe,GAAare,KAAqBuf,KAEpC5M,EAAQnE,KAAKgU,GAAUtF,QCqJ3B,SApBIsT,GAoBeriB,GAZZnO,aAAmBoM,EAAO,GAAIyR,IAK7B7d,WAAe,SAKfA,eAAiB,KAGvBoM,EAAOpM,KAAKmO,QAASA,GAGrB9G,IAAIopB,EAAmB,GACnBC,EAAmB,GAGsB,IAA3C1wB,KAAKmO,QAAQwiB,YAAalnB,QAAQ,MACW,IAA7CzJ,KAAKmO,QAAQwiB,YAAalnB,QAAQ,OAElCgnB,EAAmB,gBAAgBzwB,KAAKmO,wBACF,KAA7BnO,KAAKmO,QAAQwiB,cACtBD,EAAmB,mBAAmB1wB,KAAKmO,qBAI7CnO,KAAKyS,SAAWjK,EACd,8DACqCxI,KAAKmO,0BACvCnO,KAAKmO,QAAQyiB,8GACyFF,OAAqBD,MAAoBzwB,KAAKmO,0BACjJ,IACJ,UACFgO,SAASzc,SAASkJ,MAGpB5I,KAAKorB,YAAY,SAEjBprB,KAAKyS,SAASoI,SAAS5Q,0BAA0BjK,KAAKmO,kBAjF1DnH,IAAM6W,GAA2B,CAC/BgT,QAAS,GACT1hB,QAAS,IACTlI,SAAU,SACV2pB,WAAY,GACZD,YAAa,GACbG,oBAAoB,EACpBC,qBAAqB,EAErB1C,qBAEA2C,2BAEAtC,oBAEAC,sBAEAC,qBAEAC,uBAMExB,GAA+B,KAK7BC,GAAY,iBC1HlB,SAAS2D,GAAU7pB,GACjB,uBADyC,GAEvC,mCACEA,wBAA8BA,EAAU,iTAmB9C,SAAS8pB,GAASC,GAChBnqB,IAAMoqB,EAAW5oB,EAAE2oB,GAEbE,EAAQD,EAASzZ,SAAS,yBAC5BsZ,GAAU,GAAKA,GAAU,GAAKA,GAAU,GAAKA,GAAU,GACvDA,KAEJG,EAAStoB,KAAKuoB,gBDuJNN,6BAAoB7kB,GAC1BlF,IAAM2L,EAAUnK,EAAE0D,EAAMnH,QAGrB4N,EAAQgF,SAAS,kBACjBhF,EAAQ6C,QAAQ,kBAAkB7T,QAEnC0rB,GAAajN,sBAQTgL,qBAAYlM,GAClBlY,IAGIqkB,EACAiG,EAJEC,EAAiBvxB,KAAKyS,SAAS,GAAG+e,aAClCvqB,EAAWjH,KAAKmO,QAAQlH,SAO5BokB,EADe,WAAbpkB,GAAsC,QAAbA,EACd,OAEA,IAID,SAAViY,EACFoS,EAAa,KAEI,WAAbrqB,IACFqqB,EAAaC,GAGE,QAAbtqB,IACFqqB,GAAcC,GAGC,aAAbtqB,GAAwC,cAAbA,IAC7BqqB,GAAcC,EAAiB,IAGhB,gBAAbtqB,GAA2C,iBAAbA,IAChCqqB,EAAaC,EAAiB,KAIlCvxB,KAAKyS,SAASgJ,uBAAuB4P,MAAciG,sBAM9CrhB,2BACc,YAAfjQ,KAAKkf,OAAsC,WAAflf,KAAKkf,QAKjCmO,GACFX,GAAMY,qBAAiBttB,EAAKiQ,WAI9Bod,GAAcrtB,MAGTkf,MAAQ,UACblf,KAAKmO,QAAQugB,OAAQ1uB,MAErBA,KAAKorB,YAAY,QAEjBprB,KAAKyS,SAAS0I,yBACO,YAAfnb,EAAKkf,QAITlf,EAAKkf,MAAQ,SACblf,EAAKmO,QAAQwgB,SAAU3uB,GAGnBA,EAAKmO,QAAQyiB,YACf5wB,EAAKyS,SAAShI,KAAK,yBAAyB0I,GAAG,mBAC7CnT,EAAKmO,QAAQ6iB,cAAehxB,GACxBA,EAAKmO,QAAQ2iB,oBACf9wB,EAAKogB,UAMXpgB,EAAKyS,SAASU,GAAG,iBAAUjH,GACpB1D,EAAE0D,EAAMnH,QAAuB4S,SAAS,yBAC3C3X,EAAKmO,QAAQkgB,QAASruB,KAKtBA,EAAKmO,QAAQ4iB,qBACfjnB,EAAUqJ,GAAGuP,GAAY1iB,EAAK+wB,qBAI5B/wB,EAAKmO,QAAQgB,UACfnP,EAAKuwB,UAAYhvB,6BAAiBvB,EAAKogB,SAASpgB,EAAKmO,QAAQgB,6BAQ5DiR,4BACc,YAAfpgB,KAAKkf,OAAsC,WAAflf,KAAKkf,QAIjClf,KAAKuwB,WACPjgB,aAAatQ,KAAKuwB,WAGhBvwB,KAAKmO,QAAQ4iB,qBACfjnB,EAAUoJ,IAAIwP,GAAY1iB,KAAK+wB,qBAGjC/wB,KAAKkf,MAAQ,UACblf,KAAKmO,QAAQygB,QAAS5uB,MAEtBA,KAAKorB,YAAY,SAEjBprB,KAAKyS,SAAS0I,yBACO,YAAfnb,EAAKkf,QAITmO,GAAc,KACdrtB,EAAKkf,MAAQ,SACblf,EAAKmO,QAAQ0gB,SAAU7uB,GACvBA,EAAKyS,SAASjH,SACdmhB,GAAQW,SAKdpjB,EAAKunB,SAAW,SAAUZ,EAAc1iB,kBAAe,IACjDnJ,EAAS6rB,GACX1iB,EAAQ0iB,QAAUA,EAElB1iB,EAAU0iB,EAGZ7pB,IAAMkW,EAAW,IAAIsT,GAASriB,GAI9B,OAFA+O,EAASjN,OAEFiN,GE/VT1U,aAEEsB,EAAUqJ,GAAG,QAAS,qBAAsB,WAC1CnM,IAAMmZ,EAAQ3X,EAAExI,MACV0xB,EAAavR,EAAMvY,SAEzB8pB,EAAWxc,SAAS,KAAK/M,cAAMf,EAAOmB,GACpCvB,IAAM2qB,EAASxR,EAAMlO,GAAG1J,GAEpBopB,GACF3U,GAAe,SAAU,YAAa0U,EAAW,QAAIvvB,EAAW,OAC9DiF,IAIJuqB,EACInpB,EAAED,GAAM0B,SAAS,0BACjBzB,EAAED,GAAMgU,YAAY,8BAK5BrS,EAAK0R,SAAS,+BAAgC,WAC5C,IAAI1R,EAAK0T,SAAS5d,KAAM,CACtBme,YAAa,4BACbC,cAAe,oCDoBrB5V,aAEE0B,EAAK0R,SAAS,gBAAiB,WAC7BsV,GAASlxB,UEuFX,SA/BI4xB,GAgCFC,EACAC,EACA3jB,cAMA,kBANmB,IApBdnO,aAAmBoM,EAAO,GAAIyR,IAK7B7d,WAAe,SAiBrBA,KAAK+xB,QAAUvpB,EAAEqpB,GAAgBvnB,QACjCtK,KAAKyS,SAAWjK,EAAEspB,GAAcxnB,SAG3BtK,KAAK+xB,QAAQnqB,SAASqK,GAAGjS,KAAKyS,SAAS7K,UAC1C,MAAM,IAAI/C,MAAM,oDAGlBuH,EAAOpM,KAAKmO,QAASA,GAGrBnO,KAAKgyB,UAAYhyB,KAAKyS,SAASkF,SAAS,qBAGxC3X,KAAKiyB,UACsB,SAAzBjyB,KAAKmO,QAAQ+jB,SAAsBlyB,KAAKgyB,UAAYhyB,KAAKmO,QAAQ+jB,QAGnElyB,KAAK+xB,QAAQ5e,GAAG,0BAAenT,EAAK4a,WAGpC9Q,EAAUqJ,GAAG,4BAAqBjH,GAChClF,IAAM2L,EAAUnK,EAAE0D,EAAMnH,SAGtB/E,EAAKqgB,UACJ1N,EAAQV,GAAGjS,EAAKyS,WAChBtI,EAASnK,EAAKyS,SAAS,GAAIE,EAAQ,KACnCA,EAAQV,GAAGjS,EAAK+xB,UAChB5nB,EAASnK,EAAK+xB,QAAQ,GAAIpf,EAAQ,KAEnC3S,EAAKogB,UAMTpZ,IAAMoU,EAAOpb,KACb8J,EAAUqJ,GAAG,QAAS,kBAAmB,WACvCnM,IAAMmZ,EAAQ3X,EAAExI,MAGbmgB,EAAM1V,KAAK,cAAc9I,aACCQ,IAA3Bge,EAAM7B,KAAK,aAEXlD,EAAKgF,UAKTpgB,KAAKmyB,mBAGLpoB,EAAQoJ,GACN,SACA3K,EAAEoU,2BAAe5c,EAAKwtB,YAAY,MArGxCxmB,IAAM6W,GAA2B,CAC/B5W,SAAU,OACVmrB,MAAO,OACP3K,OAAQ,GACR4K,QF9CFnoB,EAAKooB,eAAiB,SACpB7pB,IAEkBvD,EAAYuD,GAAYD,EAAE,iBAAmBA,EAAEC,IAEvDN,KAAK,WACb+oB,GAASlxB,UEyCXkyB,QAAS,OACTK,eAAgB,QAChBC,aAAc,kBAqGNnS,kBACN,MAAsB,YAAfrgB,KAAKkf,OAAsC,WAAflf,KAAKkf,oBAOlCD,sBAAaxY,GACnBuW,GAAevW,EAAM,OAAQzG,KAAKyS,SAAUzS,oBAMtCwtB,oBACNnmB,IAAIorB,EACA/J,EAGAzhB,EACAmrB,EAYAM,EACA/K,EAVEE,EAAe9d,EAAQyW,SACvBmS,EAAc5oB,EAAQ2S,QAGtB+K,EAASznB,KAAKmO,QAAQsZ,OACtBwK,EAAYjyB,KAAKiyB,UACjBW,EAAU5yB,KAAKmO,QAAQkkB,MAOvBlK,EAAYnoB,KAAKyS,SAASiK,QAC1B0L,EAAapoB,KAAKyS,SAAS+N,SAG3BqS,EAAa7yB,KAAK+xB,QAAQ,GAAGrqB,wBAC7BorB,EAAYD,EAAWjc,IACvBmc,EAAaF,EAAWhc,KACxBmc,EAAeH,EAAWrS,OAC1ByS,EAAcJ,EAAWnW,MACzBwW,EAAerL,EAAeiL,EAAYE,EAC1CG,EAAcR,EAAcI,EAAaE,EAGzCG,EAAkBpzB,KAAK+xB,QAAQ,GAAGsB,UAClCC,EAAmBtzB,KAAK+xB,QAAQ,GAAGwB,WAsCzC,GAhCItsB,EAH0B,SAA1BjH,KAAKmO,QAAQlH,SACqCmhB,EAAaX,EAA7DyL,GAAgBjB,EAAYe,EAAe,GAElC,SAGX5K,EAAaX,EADbqL,GAAab,EAAYe,EAAe,GAI7B,MAGA,SAGFhzB,KAAKmO,QAAQlH,SAOtBmrB,EAHuB,SAAvBpyB,KAAKmO,QAAQikB,MACiBjK,EAAYV,EAAxC0L,EAAcF,EAER,OAC4B9K,EAAYV,EAAvCsL,EAAaE,EAEd,QAGA,SAGFjzB,KAAKmO,QAAQikB,MAIN,WAAbnrB,EACF0gB,EAAmB,IACnBe,GACGuJ,EAAY,EAAIe,IAChBJ,EAAUE,EAAYM,QACpB,GAAiB,QAAbnsB,EACT0gB,EAAmB,OACnBe,GACGuJ,EAAYe,EAAe,IAC3BJ,EAAUE,EAAY1K,EAAagL,EAAkBhL,OACnD,CACLT,EAAmB,MAKnBtgB,IAAImsB,EAAiBpL,EAGhBpoB,KAAKgyB,WACsBnK,EAA1BO,EAAsB,EAATX,IACf+L,EAAiB3L,EAAwB,EAATJ,EAChCznB,KAAKyS,SAAS+N,OAAOgT,IAIzB9K,GACGb,EAAe2L,GAAkB,GACjCZ,EAAU,EAAIQ,EAAkBN,GAMrC,GAHA9yB,KAAKyS,SAASiE,IAAI,MAAUgS,QAGd,SAAV0J,EACFM,EAAmB,IACnBD,EAAWG,EAAUG,EAAaO,OAC7B,GAAc,UAAVlB,EACTM,EAAmB,OACnBD,EAAWG,EACPG,EAAaE,EAAc9K,EAC3BmL,EAAmBL,EAAc9K,MAChC,CACLuK,EAAmB,MAInBrrB,IAAIosB,EAAgBtL,EAGSwK,EAAzBxK,EAAqB,EAATV,IACdgM,EAAgBd,EAAuB,EAATlL,EAC9BznB,KAAKyS,SAASiK,MAAM+W,IAGtBhB,GACGE,EAAcc,GAAiB,GAC/Bb,EAAU,EAAIU,EAAmBP,GAGtC/yB,KAAKyS,SAASiE,IAAI,OAAW+b,QAG7BzyB,KAAKyS,SAAS8I,gBAAmBmX,MAAoB/K,iBAO/C+L,yBAAgBC,GACtB3sB,IAEI4sB,EACAC,EAGA5sB,EACAmrB,EAOAM,EACA/K,EAfExH,EAAQwT,EAAS/rB,OAAO,mBAUxBigB,EAAe9d,EAAQyW,SACvBmS,EAAc5oB,EAAQ2S,QAOtBoX,EAAeH,EAASjX,QACxBqX,EAAgBJ,EAASnT,SAGzBwT,EAAW7T,EAAM,GAAGzY,wBACpBusB,EAAYD,EAAStX,MACrBsL,EAAagM,EAASxT,OACtB0T,EAAWF,EAASnd,KACpBsd,EAAUH,EAASpd,IAiBvBwb,EAFuC0B,EAArCnB,EAAcuB,EAAWD,EAEnB,OACYH,EAAXI,EAED,QAGA,OAIO,YAtBfjtB,EAF2B8sB,EAAzBlM,EAAesM,EAEN,SACqBJ,EAAvBI,EAAUnM,EAER,MAGA,UAkBX4L,EADAjM,EAAmB,IAEG,QAAb1gB,IACT0gB,EAAmB,OACnBiM,GAAcG,EAAgB/L,GAGhC2L,EAASjd,IAAI,MAAUkd,QAGT,SAAVxB,GACFM,EAAmB,IACnBmB,EAAcI,GACK,UAAV7B,IACTM,EAAmB,OACnBmB,GAAeC,GAGjBH,EAASjd,IAAI,OAAWmd,QAGxBF,EAASpY,gBAAmBmX,MAAoB/K,iBAO1CyM,qBAAYT,GAClB3zB,KAAK0zB,gBAAgBC,GAErBA,EACG1pB,SAAS,kBACTrC,OAAO,mBACPqC,SAAS,uCAONoqB,sBAAaV,GAEnBA,EACGpX,YAAY,kBACZtS,SAAS,qBACTkR,gCAAoBwY,EAASpX,YAAY,uBAGzC3U,OAAO,mBACP2U,YAAY,yBAGfoX,EAASlpB,KAAK,cAActC,cAAMlC,EAAGquB,GACnCttB,IAAMutB,EAAc/rB,EAAE8rB,GAEtBC,EACGhY,YAAY,kBACZtS,SAAS,qBACTkR,gCAAoBoZ,EAAYhY,YAAY,uBAC5C3U,OAAO,mBACP2U,YAAY,yCAQXiY,uBAAcb,GACpBA,EAAShc,SAAS,kBACd3X,KAAKq0B,aAAaV,GAClB3zB,KAAKo0B,YAAYT,iBAMfxB,4BAENnrB,IAAMoU,EAAOpb,KA8Cb,GA3CAA,KAAKyS,SAASU,GAAG,QAAS,kBAAmB,SAAUjH,GACrDlF,IAAMmZ,EAAQ3X,EAAExI,MACV2S,EAAUnK,EAAE0D,EAAMnH,QAGxB,QAA+B5C,IAA3Bge,EAAM7B,KAAK,cAKX3L,EAAQV,GAAG,gBAAiBU,EAAQV,GAAG,kBAKtCU,EAAQ6C,QAAQ,mBAAmBlL,QAAQ2H,GAAGkO,GAAnD,CAKAnZ,IAAM2sB,EAAWxT,EAAMjL,SAAS,cAGhCiL,EACGvY,OAAO,cACPsN,SAAS,mBACT/M,cAAMlC,EAAGsC,GACRvB,IAAMytB,EAAcjsB,EAAED,GAAM2M,SAAS,eAGnCuf,EAAY9yB,QACVgyB,EAAShyB,QAAW8yB,EAAYxiB,GAAG0hB,IAErCvY,EAAKiZ,aAAaI,KAKpBd,EAAShyB,QACXyZ,EAAKoZ,cAAcb,MAIa,UAAhC3zB,KAAKmO,QAAQokB,eAA4B,CAE3ClrB,IAAI8H,EAAe,KACfulB,EAAmB,KAEvB10B,KAAKyS,SAASU,GAAG,qBAAsB,kBAAmB,SACxDjH,GAEAlF,IAAMmZ,EAAQ3X,EAAExI,MACV4kB,EAAY1Y,EAAMlB,KAClB2pB,EAAiBnsB,EACpB0D,EAAqBhL,eAIxB,QAA+BiB,IAA3Bge,EAAM7B,KAAK,YAAf,CAKA,GAAkB,cAAdsG,GACF,IACGzE,EAAMlO,GAAG0iB,IACVxqB,EAASgW,EAAM,GAAIwU,EAAe,IAElC,YAKC,GAAkB,aAAd/P,IAELzE,EAAMlO,GAAG0iB,IACTxqB,EAASgW,EAAM,GAAIwU,EAAe,KAElC,OAKJ3tB,IAAM2sB,EAAWxT,EAAMjL,SAAS,cAGhC,GAAkB,cAAd0P,GACF,GAAI+O,EAAShyB,OAAQ,CAEnBqF,IAAM4tB,EAAWjB,EAASnlB,KAAK,0BAM/B,GALIomB,GACFtkB,aAAaskB,GAIXjB,EAAShc,SAAS,kBACpB,OAIFrH,aAAaokB,GAGbvlB,EAAUulB,EAAcnzB,6BAChB6Z,EAAKgZ,YAAYT,IACvBvY,EAAKjN,QAAQqkB,cAGfmB,EAASnlB,KAAK,wBAAyBW,SAKtC,GAAkB,aAAdyV,GACH+O,EAAShyB,OAAQ,CAEnBqF,IAAM6tB,EAAUlB,EAASnlB,KAAK,yBAC1BqmB,GACFvkB,aAAaukB,GAIf1lB,EAAU5N,6BACF6Z,EAAKiZ,aAAaV,IACxBvY,EAAKjN,QAAQqkB,cAGfmB,EAASnlB,KAAK,yBAA0BW,sBAU1CgM,yBACNnb,KAAKyS,SAAS8J,YAAY,qBAEP,YAAfvc,KAAKkf,QACPlf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,WAGD,YAAfjf,KAAKkf,QACPlf,KAAKkf,MAAQ,SACblf,KAAKif,aAAa,UAGlBjf,KAAKyS,SAASiE,IAAI,CAChBE,IAAK,GACLC,KAAM,GACN6F,MAAO,GACPzV,SAAU,yBAQT2T,kBACL5a,KAAKqgB,SAAWrgB,KAAKogB,QAAUpgB,KAAKiQ,qBAM/BA,2BACDjQ,KAAKqgB,WAITrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,QAElBjf,KAAKwtB,WAELxtB,KAAKyS,SAEFiE,IAAI,WAAY1W,KAAKmO,QAAQkkB,MAAQ,QAAU,YAC/CpoB,SAAS,kBACTkR,gCAAoBnb,EAAKmb,iCAMvBiF,4BACApgB,KAAKqgB,WAIVrgB,KAAKkf,MAAQ,UACblf,KAAKif,aAAa,SAGlBjf,KAAKyS,SAAShI,KAAK,cAActC,cAAMlC,EAAG6uB,GACxC90B,EAAKq0B,aAAa7rB,EAAEssB,MAGtB90B,KAAKyS,SACF8J,YAAY,kBACZtS,SAAS,qBACTkR,gCAAoBnb,EAAKmb,oBAIhCjR,EAAK0nB,KAAOA,GC1sBZ5qB,IAAMuY,GAAa,YACbiD,GAAW,oBAajBha,aACEsB,EAAUqJ,GAAG,YAAaoM,OAAe,WACvCvY,IAAM+U,EAAQvT,EAAExI,MACZkd,EAAWnB,EAAMvN,KAAKgU,IAE1B,IAAKtF,EAAU,CACblW,IAAMmH,EAAUkQ,GAAare,KAAqBuf,IAC5CuS,EAAe3jB,EAAQpJ,cACtBoJ,EAAQpJ,OAEfmY,EAAW,IAAIhT,EAAK0nB,KAAK7V,EAAO+V,EAAc3jB,GAC9C4N,EAAMvN,KAAKgU,GAAUtF,GAErBA,EAAStC"} \ No newline at end of file diff --git a/srun.py b/srun.py index a36af1b..ebc692d 100644 --- a/srun.py +++ b/srun.py @@ -3,9 +3,10 @@ from PyQt5.QtCore import QObject, pyqtSlot, QUrl from PyQt5.QtWebChannel import QWebChannel from PyQt5.QtWebEngineWidgets import QWebEngineView +from PyQt5 import Qt import Core as Core -#本类为python和js信息交换内容 + class Receivers(QObject): # pyqtSlot @pyqtSlot(str, result=str) @@ -18,11 +19,20 @@ def Login(self,content): PassWord = content.split('\n')[1] core.username = UserName core.password = PassWord - self.returning(core.login()) + self.returning("dialog",core.login()) + self.returning("useageCount",core.login()) @pyqtSlot(str, result=str) def Logout(self,code): - self.returning(core.logout()) + self.returning("dialog",core.logout()) + + @pyqtSlot(str, result=str) + def hardLogout(self,username): + tempUser = core.username + core.username = username + core.logout() + core.username = tempUser + def js_callback(self,result): print(result) @@ -32,10 +42,11 @@ def show_status(self): status = core.show_status() command = "Show('status','"+status+"');" browser.page().runJavaScript(command) + browser.page().runJavaScript("useageCount('"+status+"');") - def returning(self,content): + def returning(self,content,jsType): '''返回例如登陆信息''' - command = "dialog('"+content+"');" + command = jsType+"('"+content+"');" browser.page().runJavaScript(command) @@ -44,14 +55,15 @@ def returning(self,content): def exit_app(self): QApplication.quit() -#构建主页 + if __name__ == "__main__": core = Core.obj() core.__init__ + config = core.config app = QApplication(sys.argv) # 新增一个浏览器引擎 browser = QWebEngineView() - browser.setWindowTitle("Srun3K Login") + browser.setWindowTitle("Srun3K Boxies") browser.resize(900, 600) # 增加一个通信中需要用到的频道 channel = QWebChannel() @@ -63,8 +75,8 @@ def exit_app(self): browser.page().setWebChannel(channel) # 内置的网页地址 url_string = os.getcwd().replace("\\","/") + "/index.html" - #Windows下有"/"和"\"的区别 - print(url_string) browser.load(QUrl(url_string)) + browser.page().runJavaScript("configLoad('"+str(config)+"');") + browser.setWindowFlags(Qt.Qt.CustomizeWindowHint) browser.show() - sys.exit(app.exec_()) + sys.exit(app.exec_()) \ No newline at end of file