diff --git a/README.md b/README.md index 098a2ae..8fb2e27 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ The Library runs on any kind of **ESP8266** and **ESP32** (NodeMCU, AI Thinker, - [Advanced Features](#advanced-features) * [Dynamic Visibility](#dynamic-visibility) * [Inline Styles](#inline-styles) + * [Disabling Controls](#disabling-controls) * [Grouped controls](#grouped-controls) * [Wide controls](#wide-controls) * [Graph (Experimental)](#graph--experimental-) @@ -470,6 +471,36 @@ The [completeExample](examples/completeExample/completeExample.cpp) example incl ![More Inline Styles](docs/ui_inlinestyles2.png) +### Disabling Controls + +It is possible to dynamically enable and disable controls to, for example, provide feedback to the user that a particular feature is +temporarily unavailable. To do this use the following function call: + +``` +ESPUI.setEnabled(controlId, enabled); +``` + +Setting `enabled` to false will make the control noninteractive and it will visually change to illustrate this to the user. The control +will stop firing any events. Note that whilst the widget will change appearance, the panel of the control will remain whatever colour +it was set to. If you wish to also change the colour of the panel then you should use inline styles to show the noninteractive state. For example: + +``` +ESPUI.setEnabled(mainButton, false); +const String disabledstyle = "background-color: #bbb; border-bottom: #999 3px solid;"; +ESPUI.setPanelStyle(mainButton, disabledstyle); +``` + +This CSS style sets the panel background and its border to grey. To put the control back to enabled use the following: + +``` +ESPUI.setEnabled(mainButton, true); +ESPUI.setPanelStyle(mainButton, ";"); +``` + +Note that we have to set the inline style to `";"` (i.e. an empty CSS rule) because if we just try to set it to `""` this will be +interpreted as "do not change the style". + +Controls can also be set to disabled before the UI is started. ### Grouped controls diff --git a/data/css/style.css b/data/css/style.css index cf04a55..f5d46f7 100644 --- a/data/css/style.css +++ b/data/css/style.css @@ -422,7 +422,7 @@ button { background-color: #999999; } -button:active { +button:enabled:active { background-color: #666666; transform: translateX(4px) translateY(4px); } @@ -587,6 +587,13 @@ hr { background-color: #eee; } +.control:not(.disabled) a.confirm:active { + background-color:#777 +} +.control:not(.disabled) li:active { + background-color:#777 +} + /* Switch –––––––––––––––––––––––––––––––––––––––––––––––––– */ @@ -1148,3 +1155,46 @@ text { .vert-slider span { transform: rotate(90deg); } + + +/* Styles to implement disabled controls */ + +button:disabled { + color: #333; + background-color: #999; +} + +select:disabled { + color: #333; + background-color: #999; +} + +input:disabled { + color: #333; + background-color: #999; +} + +.range-slider__range:disabled { + background-color: #999; +} + +.range-slider__range:disabled::-webkit-slider-thumb { + background-color: #aaa; +} + +.range-slider__range:disabled::-moz-range-thumb { + background-color: #aaa; +} + +.switch.disabled .in::before { + background:#bbb; + border: 1px solid #ddd; +} + +.switch.disabled .in::after { + background:#bbb; +} + +.switch.checked.disabled { + background: #b1d092; +} diff --git a/data/css/style.min.css b/data/css/style.min.css index aafda4b..28cdbdb 100644 --- a/data/css/style.min.css +++ b/data/css/style.min.css @@ -1 +1 @@ -.container{position:relative;width:79%;margin:20px;box-sizing:border-box}.column,.columns{width:100%;float:left}.card{min-height:100px;border-radius:6px;box-shadow:0 4px 4px rgba(204,197,185,0.5);padding-left:20px;padding-right:20px;margin-bottom:40px;min-width:500px;color:#fff}@media(min-width:1205px){.wide.card{min-width:1075px}}@media(min-width:1790px){.wide.card{min-width:1650px}}@media(max-width:630px){.card{min-width:98%}}.sectionbreak.columns{color:black}.sectionbreak.columns hr{border:0;height:2px;background-color:#666}.turquoise{background:#1abc9c;border-bottom:#16a085 3px solid}.emerald{background:#2ecc71;border-bottom:#27ae60 3px solid}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.dark{background:#444857;border-bottom:#444857 3px solid}.label{box-sizing:border-box;white-space:nowrap;border-radius:.2em;padding:.12em .4em .14em;text-align:center;color:#fff;font-weight:700;line-height:1.3;margin-bottom:5px;display:inline-block;white-space:nowrap;vertical-align:baseline;position:relative;top:-.15em;background-color:#999;margin-bottom:10px}.label-wrap{width:90%;white-space:pre-wrap;word-wrap:break-word}.label.color-blue{background-color:#6f9ad1}.label.color-red{background-color:#d37c7c}.label.color-green{background-color:#9bc268}.label.color-orange{background-color:#dea154}.label.color-yellow{background-color:#e9d641}.label.color-purple{background-color:#9f83d1}@media(min-width:400px){.container{width:84%}}@media(min-width:630px){.container{width:98%}.column,.columns{margin-right:35px}.column:first-child,.columns:first-child{margin-left:0}.one.column,.one.columns{width:4.66666666667%}.two.columns{width:13.3333333333%}.three.columns{width:22%}.four.columns{width:30.6666666667%}.five.columns{width:39.3333333333%}.six.columns{width:48%}.seven.columns{width:56.6666666667%}.eight.columns{width:65.3333333333%}.nine.columns{width:74%}.ten.columns{width:82.6666666667%}.eleven.columns{width:91.3333333333%}.twelve.columns{width:100%;margin-left:0}.one-third.column{width:30.6666666667%}.two-thirds.column{width:65.3333333333%}.one-half.column{width:48%}.offset-by-one.column,.offset-by-one.columns{margin-left:8.66666666667%}.offset-by-two.column,.offset-by-two.columns{margin-left:17.3333333333%}.offset-by-three.column,.offset-by-three.columns{margin-left:26%}.offset-by-four.column,.offset-by-four.columns{margin-left:34.6666666667%}.offset-by-five.column,.offset-by-five.columns{margin-left:43.3333333333%}.offset-by-six.column,.offset-by-six.columns{margin-left:52%}.offset-by-seven.column,.offset-by-seven.columns{margin-left:60.6666666667%}.offset-by-eight.column,.offset-by-eight.columns{margin-left:69.3333333333%}.offset-by-nine.column,.offset-by-nine.columns{margin-left:78%}.offset-by-ten.column,.offset-by-ten.columns{margin-left:86.6666666667%}.offset-by-eleven.column,.offset-by-eleven.columns{margin-left:95.3333333333%}.offset-by-one-third.column,.offset-by-one-third.columns{margin-left:34.6666666667%}.offset-by-two-thirds.column,.offset-by-two-thirds.columns{margin-left:69.3333333333%}.offset-by-one-half.column,.offset-by-one-half.columns{margin-left:52%}}html{font-size:62.5%}body{margin:0;font-size:1.5em;line-height:1;font-weight:400;font-family:"Open Sans",sans-serif;color:#222;background-color:#ecf0f1}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:300}h1{font-size:4rem;line-height:1.2;letter-spacing:-.1rem}h2{font-size:3.6rem;line-height:1.25;letter-spacing:-.1rem}h3{font-size:3rem;line-height:1.3;letter-spacing:-.1rem}h4{font-size:2.4rem;line-height:1.35;letter-spacing:-.08rem}h5{font-size:1.8rem;line-height:1.5;letter-spacing:-.05rem}h6{font-size:1.5rem;line-height:1.6;letter-spacing:0}@media(min-width:630px){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2rem}h6{font-size:1.5rem}}p{margin-top:0}a{color:#1eaedb}a:hover{color:#0fa0ce}button{display:inline-block;padding:10px;border-radius:3px;color:#fff;background-color:#999}button:active{background-color:#666;transform:translateX(4px) translateY(4px)}#mainHeader{display:inline-block}#conStatus{position:inherit;font-size:.75em}button,.button{margin-bottom:1rem;margin-left:.3rem;margin-right:.3rem}.u-full-width{width:100%;box-sizing:border-box}.u-max-full-width{max-width:100%;box-sizing:border-box}.u-pull-right{float:right}.u-pull-left{float:left}.tcenter{text-align:center}hr{margin-top:.5rem;margin-bottom:1.2rem;border-width:0;border-top:1px solid #e1e1e1}.container:after,.row:after,.u-cf{content:"";display:table;clear:both}.control{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.1),hsla(0,0%,100%,0.1));border-radius:50%;box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.75),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.75);height:9em;margin:3em auto;position:relative;width:9em}.control ul{height:100%;padding:0;transform:rotate(45deg)}.control li{border-radius:100% 0 0 0;box-shadow:inset -1px -1px 1px hsla(0,0%,100%,0.5),0 0 1px hsla(0,0%,0%,0.75);display:inline-block;height:50%;overflow:hidden;width:50%}.control ul li:nth-child(2){transform:rotate(90deg)}.control ul li:nth-child(3){transform:rotate(-90deg)}.control ul li:nth-child(4){transform:rotate(180deg)}.control ul a{height:200%;position:relative;transform:rotate(-45deg);width:200%}.control a:hover,.control a:focus{background-color:hsla(0,0%,100%,0.25)}.control a{border-radius:50%;color:#333;display:block;font:bold 1em/3 sans-serif;text-align:center;text-decoration:none;text-shadow:0 1px 1px hsla(0,0%,100%,0.4);transition:.15s}.control .confirm{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.15),hsla(0,0%,100%,0.25));box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.25),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.85);left:50%;line-height:3;margin:-1.5em;position:absolute;top:50%;width:3em}.control .confirm:hover,.control .confirm:focus{background-color:#eee}.switch{display:inline-block !important;background-color:#bebebe;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);color:#fff;cursor:pointer;display:block;font-size:14px;height:26px;margin-left:.3rem;margin-right:.3rem;position:relative;width:60px;-webkit-transition:background-color .2s ease-in-out;-moz-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;-ms-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.switch.checked{background-color:#76d21d}.switch input[type="checkbox"]{display:none;cursor:pointer;height:10px;left:12px;position:absolute;top:8px;width:10px}.in{position:absolute;top:8px;left:12px;-webkit-transition:left .08s ease-in-out;-moz-transition:left .08s ease-in-out;-o-transition:left .08s ease-in-out;-ms-transition:left .08s ease-in-out;transition:left .08s ease-in-out}.switch.checked div{left:38px}.switch .in:before{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f0f0f0));background:-webkit-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-o-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-ms-linear-gradient(top,#fff 0,#f0f0f0 100%);background:linear-gradient(to bottom,#fff 0,#f0f0f0 100%);border:1px solid #fff;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,0.3);content:"";height:18px;position:absolute;top:-5px;left:-9px;width:26px}.switch .in:after{background:#f0f0f0;background:-moz-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-o-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-ms-linear-gradient(top,#f0f0f0 0,#fff 100%);background:linear-gradient(to bottom,#f0f0f0 0,#fff 100%);border-radius:10px;content:"";height:12px;margin:-1px 0 0 -1px;position:absolute;width:12px}.rkmd-slider{display:block;position:relative;font-size:16px;font-family:"Roboto",sans-serif}.rkmd-slider input[type="range"]{overflow:hidden;position:absolute;width:1px;height:1px;opacity:0}.rkmd-slider input[type="range"]+.slider{display:block;position:relative;width:100%;height:27px;border-radius:13px;background-color:#bebebe}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider{height:4px;border-radius:0}}.rkmd-slider input[type="range"]+.slider .slider-fill{display:block;position:absolute;width:0;height:100%;user-select:none;z-index:1}.rkmd-slider input[type="range"]+.slider .slider-handle{cursor:pointer;position:absolute;top:12px;left:0;width:15px;height:15px;margin-left:-8px;border-radius:50%;transition:all .2s ease;user-select:none;z-index:2}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider .slider-handle{top:-5.5px}}.rkmd-slider input[type="range"]:disabled+.slider{background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle{cursor:default !important;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle .slider-label{display:none;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active{top:-5.5px;width:15px;height:15px;margin-left:-8px}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active .slider-label{display:none;border-radius:50%;transform:none}.rkmd-slider input[type="range"]:disabled+.slider .slider-handle:active{box-shadow:none !important;transform:scale(1) !important}.rkmd-slider.slider-discrete .slider .slider-handle{position:relative;z-index:1}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{position:absolute;top:-17.5px;left:4px;width:30px;height:30px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;border-radius:50%;-webkit-transform:scale(1) rotate(-45deg);transform:scale(1) rotate(-45deg);-webkit-transition:all .2s ease;transition:all .2s ease}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{left:-2px;-webkit-transform:scale(0.5) rotate(-45deg);transform:scale(0.5) rotate(-45deg)}}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{position:absolute;top:7px;left:0;width:100%;color:#fff;font-size:16px;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{font-size:12px}}.rkmd-slider.slider-discrete .slider .slider-handle.is-active{top:0;margin-left:-2px;width:4px;height:4px}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label{top:-15px;left:-2px;border-radius:15px 15px 15px 0;-webkit-transform:rotate(-45deg) translate(23px,-25px);transform:rotate(-45deg) translate(23px,-25px)}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label span{opacity:1}.rkmd-slider.slider-discrete.slider-turquoise .slider-label{background-color:#16a085}.rkmd-slider.slider-discrete.slider-emerald .slider-label{background-color:#27ae60}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.rkmd-slider.slider-discrete.slider-peterriver .slider-label{background-color:#2980b9}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.rkmd-slider.slider-discrete.slider-wetasphalt .slider-label{background-color:#2c3e50}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.rkmd-slider.slider-discrete.slider-sunflower .slider-label{background-color:#e6bb0f}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.rkmd-slider.slider-discrete.slider-carrot .slider-label{background-color:#d35400}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.rkmd-slider.slider-discrete.slider-alizarin .slider-label{background-color:#c0392b}input{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}select{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}input[id^="num"]{max-width:6em;width:auto;text-align:right;font-weight:bold;font-size:115%}body div>ul.navigation{margin:0;margin-bottom:30px;padding:0;border-bottom:3px solid #666;overflow:hidden}ul.navigation li{list-style:none;float:left;margin-right:4px}ul.navigation li.controls{float:right}ul.navigation li a{font-weight:bold;display:inline-block;padding:6px 12px;color:#888;outline:0;text-decoration:none;background:#f3f3f3;background:-webkit-gradient(linear,0 0,0 bottom,from(#eee),to(#e4e4e4));background:-moz-linear-gradient(#eee,#e4e4e4);background:linear-gradient(#eee,#e4e4e4);-pie-background:linear-gradient(#eee,#e4e4e4)}ul.navigation li.active a{pointer-events:none;color:white;background:#666;background:-webkit-gradient(linear,0 0,0 bottom,from(#888),to(#666));background:-moz-linear-gradient(#888,#666);background:linear-gradient(#888,#666);-pie-background:linear-gradient(#888,#666)}div.tabscontent>div{padding:0 15px}#tabsnav:empty{display:none}.range-slider{margin:0}.range-slider{width:100%}.range-slider__range{-webkit-appearance:none;width:calc(100% - (45px));height:10px;border-radius:5px;outline:0;padding:0;margin:0}.range-slider__value{display:inline-block;position:relative;width:30px;color:#fff;line-height:20px;text-align:center;border-radius:3px;padding:5px 5px;margin-left:2px}.range-slider__value:after{position:absolute;top:8px;left:-7px;width:0;height:0;content:""}::-moz-range-track{border:0}input::-moz-focus-inner,input::-moz-focus-outer{border:0}svg{display:block;width:100%;height:100%}.y-axis path,.x-axis path{stroke:gray;stroke-width:1;fill:none}.series{stroke:steelblue;stroke-width:3;fill:none}.data-points circle{stroke:steelblue;stroke-width:2;fill:white}.data-points text{display:none}.data-points circle:hover{fill:steelblue;stroke-width:6}.data-points circle:hover+text{display:inline-block}text{text-anchor:end}.vert-switcher{transform:rotate(270deg);margin-top:15px;margin-bottom:25px}.vert-slider{width:150px;transform:rotate(270deg);display:inline-block;margin:50px -42px 70px -42px}.vert-slider span{transform:rotate(90deg)} \ No newline at end of file +.container{position:relative;width:79%;margin:20px;box-sizing:border-box}.column,.columns{width:100%;float:left}.card{min-height:100px;border-radius:6px;box-shadow:0 4px 4px rgba(204,197,185,0.5);padding-left:20px;padding-right:20px;margin-bottom:40px;min-width:500px;color:#fff}@media(min-width:1205px){.wide.card{min-width:1075px}}@media(min-width:1790px){.wide.card{min-width:1650px}}@media(max-width:630px){.card{min-width:98%}}.sectionbreak.columns{color:black}.sectionbreak.columns hr{border:0;height:2px;background-color:#666}.turquoise{background:#1abc9c;border-bottom:#16a085 3px solid}.emerald{background:#2ecc71;border-bottom:#27ae60 3px solid}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.dark{background:#444857;border-bottom:#444857 3px solid}.label{box-sizing:border-box;white-space:nowrap;border-radius:.2em;padding:.12em .4em .14em;text-align:center;color:#fff;font-weight:700;line-height:1.3;margin-bottom:5px;display:inline-block;white-space:nowrap;vertical-align:baseline;position:relative;top:-.15em;background-color:#999;margin-bottom:10px}.label-wrap{width:90%;white-space:pre-wrap;word-wrap:break-word}.label.color-blue{background-color:#6f9ad1}.label.color-red{background-color:#d37c7c}.label.color-green{background-color:#9bc268}.label.color-orange{background-color:#dea154}.label.color-yellow{background-color:#e9d641}.label.color-purple{background-color:#9f83d1}@media(min-width:400px){.container{width:84%}}@media(min-width:630px){.container{width:98%}.column,.columns{margin-right:35px}.column:first-child,.columns:first-child{margin-left:0}.one.column,.one.columns{width:4.66666666667%}.two.columns{width:13.3333333333%}.three.columns{width:22%}.four.columns{width:30.6666666667%}.five.columns{width:39.3333333333%}.six.columns{width:48%}.seven.columns{width:56.6666666667%}.eight.columns{width:65.3333333333%}.nine.columns{width:74%}.ten.columns{width:82.6666666667%}.eleven.columns{width:91.3333333333%}.twelve.columns{width:100%;margin-left:0}.one-third.column{width:30.6666666667%}.two-thirds.column{width:65.3333333333%}.one-half.column{width:48%}.offset-by-one.column,.offset-by-one.columns{margin-left:8.66666666667%}.offset-by-two.column,.offset-by-two.columns{margin-left:17.3333333333%}.offset-by-three.column,.offset-by-three.columns{margin-left:26%}.offset-by-four.column,.offset-by-four.columns{margin-left:34.6666666667%}.offset-by-five.column,.offset-by-five.columns{margin-left:43.3333333333%}.offset-by-six.column,.offset-by-six.columns{margin-left:52%}.offset-by-seven.column,.offset-by-seven.columns{margin-left:60.6666666667%}.offset-by-eight.column,.offset-by-eight.columns{margin-left:69.3333333333%}.offset-by-nine.column,.offset-by-nine.columns{margin-left:78%}.offset-by-ten.column,.offset-by-ten.columns{margin-left:86.6666666667%}.offset-by-eleven.column,.offset-by-eleven.columns{margin-left:95.3333333333%}.offset-by-one-third.column,.offset-by-one-third.columns{margin-left:34.6666666667%}.offset-by-two-thirds.column,.offset-by-two-thirds.columns{margin-left:69.3333333333%}.offset-by-one-half.column,.offset-by-one-half.columns{margin-left:52%}}html{font-size:62.5%}body{margin:0;font-size:1.5em;line-height:1;font-weight:400;font-family:"Open Sans",sans-serif;color:#222;background-color:#ecf0f1}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:300}h1{font-size:4rem;line-height:1.2;letter-spacing:-.1rem}h2{font-size:3.6rem;line-height:1.25;letter-spacing:-.1rem}h3{font-size:3rem;line-height:1.3;letter-spacing:-.1rem}h4{font-size:2.4rem;line-height:1.35;letter-spacing:-.08rem}h5{font-size:1.8rem;line-height:1.5;letter-spacing:-.05rem}h6{font-size:1.5rem;line-height:1.6;letter-spacing:0}@media(min-width:630px){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2rem}h6{font-size:1.5rem}}p{margin-top:0}a{color:#1eaedb}a:hover{color:#0fa0ce}button{display:inline-block;padding:10px;border-radius:3px;color:#fff;background-color:#999}button:enabled:active{background-color:#666;transform:translateX(4px) translateY(4px)}#mainHeader{display:inline-block}#conStatus{position:inherit;font-size:.75em}button,.button{margin-bottom:1rem;margin-left:.3rem;margin-right:.3rem}.u-full-width{width:100%;box-sizing:border-box}.u-max-full-width{max-width:100%;box-sizing:border-box}.u-pull-right{float:right}.u-pull-left{float:left}.tcenter{text-align:center}hr{margin-top:.5rem;margin-bottom:1.2rem;border-width:0;border-top:1px solid #e1e1e1}.container:after,.row:after,.u-cf{content:"";display:table;clear:both}.control{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.1),hsla(0,0%,100%,0.1));border-radius:50%;box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.75),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.75);height:9em;margin:3em auto;position:relative;width:9em}.control ul{height:100%;padding:0;transform:rotate(45deg)}.control li{border-radius:100% 0 0 0;box-shadow:inset -1px -1px 1px hsla(0,0%,100%,0.5),0 0 1px hsla(0,0%,0%,0.75);display:inline-block;height:50%;overflow:hidden;width:50%}.control ul li:nth-child(2){transform:rotate(90deg)}.control ul li:nth-child(3){transform:rotate(-90deg)}.control ul li:nth-child(4){transform:rotate(180deg)}.control ul a{height:200%;position:relative;transform:rotate(-45deg);width:200%}.control a:hover,.control a:focus{background-color:hsla(0,0%,100%,0.25)}.control a{border-radius:50%;color:#333;display:block;font:bold 1em/3 sans-serif;text-align:center;text-decoration:none;text-shadow:0 1px 1px hsla(0,0%,100%,0.4);transition:.15s}.control .confirm{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.15),hsla(0,0%,100%,0.25));box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.25),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.85);left:50%;line-height:3;margin:-1.5em;position:absolute;top:50%;width:3em}.control .confirm:hover,.control .confirm:focus{background-color:#eee}.control:not(.disabled) a.confirm:active{background-color:#777}.control:not(.disabled) li:active{background-color:#777}.switch{display:inline-block !important;background-color:#bebebe;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);color:#fff;cursor:pointer;display:block;font-size:14px;height:26px;margin-left:.3rem;margin-right:.3rem;position:relative;width:60px;-webkit-transition:background-color .2s ease-in-out;-moz-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;-ms-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.switch.checked{background-color:#76d21d}.switch input[type="checkbox"]{display:none;cursor:pointer;height:10px;left:12px;position:absolute;top:8px;width:10px}.in{position:absolute;top:8px;left:12px;-webkit-transition:left .08s ease-in-out;-moz-transition:left .08s ease-in-out;-o-transition:left .08s ease-in-out;-ms-transition:left .08s ease-in-out;transition:left .08s ease-in-out}.switch.checked div{left:38px}.switch .in:before{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f0f0f0));background:-webkit-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-o-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-ms-linear-gradient(top,#fff 0,#f0f0f0 100%);background:linear-gradient(to bottom,#fff 0,#f0f0f0 100%);border:1px solid #fff;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,0.3);content:"";height:18px;position:absolute;top:-5px;left:-9px;width:26px}.switch .in:after{background:#f0f0f0;background:-moz-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-o-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-ms-linear-gradient(top,#f0f0f0 0,#fff 100%);background:linear-gradient(to bottom,#f0f0f0 0,#fff 100%);border-radius:10px;content:"";height:12px;margin:-1px 0 0 -1px;position:absolute;width:12px}.rkmd-slider{display:block;position:relative;font-size:16px;font-family:"Roboto",sans-serif}.rkmd-slider input[type="range"]{overflow:hidden;position:absolute;width:1px;height:1px;opacity:0}.rkmd-slider input[type="range"]+.slider{display:block;position:relative;width:100%;height:27px;border-radius:13px;background-color:#bebebe}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider{height:4px;border-radius:0}}.rkmd-slider input[type="range"]+.slider .slider-fill{display:block;position:absolute;width:0;height:100%;user-select:none;z-index:1}.rkmd-slider input[type="range"]+.slider .slider-handle{cursor:pointer;position:absolute;top:12px;left:0;width:15px;height:15px;margin-left:-8px;border-radius:50%;transition:all .2s ease;user-select:none;z-index:2}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider .slider-handle{top:-5.5px}}.rkmd-slider input[type="range"]:disabled+.slider{background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle{cursor:default !important;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle .slider-label{display:none;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active{top:-5.5px;width:15px;height:15px;margin-left:-8px}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active .slider-label{display:none;border-radius:50%;transform:none}.rkmd-slider input[type="range"]:disabled+.slider .slider-handle:active{box-shadow:none !important;transform:scale(1) !important}.rkmd-slider.slider-discrete .slider .slider-handle{position:relative;z-index:1}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{position:absolute;top:-17.5px;left:4px;width:30px;height:30px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;border-radius:50%;-webkit-transform:scale(1) rotate(-45deg);transform:scale(1) rotate(-45deg);-webkit-transition:all .2s ease;transition:all .2s ease}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{left:-2px;-webkit-transform:scale(0.5) rotate(-45deg);transform:scale(0.5) rotate(-45deg)}}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{position:absolute;top:7px;left:0;width:100%;color:#fff;font-size:16px;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{font-size:12px}}.rkmd-slider.slider-discrete .slider .slider-handle.is-active{top:0;margin-left:-2px;width:4px;height:4px}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label{top:-15px;left:-2px;border-radius:15px 15px 15px 0;-webkit-transform:rotate(-45deg) translate(23px,-25px);transform:rotate(-45deg) translate(23px,-25px)}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label span{opacity:1}.rkmd-slider.slider-discrete.slider-turquoise .slider-label{background-color:#16a085}.rkmd-slider.slider-discrete.slider-emerald .slider-label{background-color:#27ae60}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.rkmd-slider.slider-discrete.slider-peterriver .slider-label{background-color:#2980b9}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.rkmd-slider.slider-discrete.slider-wetasphalt .slider-label{background-color:#2c3e50}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.rkmd-slider.slider-discrete.slider-sunflower .slider-label{background-color:#e6bb0f}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.rkmd-slider.slider-discrete.slider-carrot .slider-label{background-color:#d35400}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.rkmd-slider.slider-discrete.slider-alizarin .slider-label{background-color:#c0392b}input{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}select{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}input[id^="num"]{max-width:6em;width:auto;text-align:right;font-weight:bold;font-size:115%}body div>ul.navigation{margin:0;margin-bottom:30px;padding:0;border-bottom:3px solid #666;overflow:hidden}ul.navigation li{list-style:none;float:left;margin-right:4px}ul.navigation li.controls{float:right}ul.navigation li a{font-weight:bold;display:inline-block;padding:6px 12px;color:#888;outline:0;text-decoration:none;background:#f3f3f3;background:-webkit-gradient(linear,0 0,0 bottom,from(#eee),to(#e4e4e4));background:-moz-linear-gradient(#eee,#e4e4e4);background:linear-gradient(#eee,#e4e4e4);-pie-background:linear-gradient(#eee,#e4e4e4)}ul.navigation li.active a{pointer-events:none;color:white;background:#666;background:-webkit-gradient(linear,0 0,0 bottom,from(#888),to(#666));background:-moz-linear-gradient(#888,#666);background:linear-gradient(#888,#666);-pie-background:linear-gradient(#888,#666)}div.tabscontent>div{padding:0 15px}#tabsnav:empty{display:none}.range-slider{margin:0}.range-slider{width:100%}.range-slider__range{-webkit-appearance:none;width:calc(100% - (45px));height:10px;border-radius:5px;outline:0;padding:0;margin:0}.range-slider__value{display:inline-block;position:relative;width:30px;color:#fff;line-height:20px;text-align:center;border-radius:3px;padding:5px 5px;margin-left:2px}.range-slider__value:after{position:absolute;top:8px;left:-7px;width:0;height:0;content:""}::-moz-range-track{border:0}input::-moz-focus-inner,input::-moz-focus-outer{border:0}svg{display:block;width:100%;height:100%}.y-axis path,.x-axis path{stroke:gray;stroke-width:1;fill:none}.series{stroke:steelblue;stroke-width:3;fill:none}.data-points circle{stroke:steelblue;stroke-width:2;fill:white}.data-points text{display:none}.data-points circle:hover{fill:steelblue;stroke-width:6}.data-points circle:hover+text{display:inline-block}text{text-anchor:end}.vert-switcher{transform:rotate(270deg);margin-top:15px;margin-bottom:25px}.vert-slider{width:150px;transform:rotate(270deg);display:inline-block;margin:50px -42px 70px -42px}.vert-slider span{transform:rotate(90deg)}button:disabled{color:#333;background-color:#999}select:disabled{color:#333;background-color:#999}input:disabled{color:#333;background-color:#999}.range-slider__range:disabled{background-color:#999}.range-slider__range:disabled::-webkit-slider-thumb{background-color:#aaa}.range-slider__range:disabled::-moz-range-thumb{background-color:#aaa}.switch.disabled .in::before{background:#bbb;border:1px solid #ddd}.switch.disabled .in::after{background:#bbb}.switch.checked.disabled{background:#b1d092} \ No newline at end of file diff --git a/data/js/controls.js b/data/js/controls.js index 85f50e3..db9b7ff 100644 --- a/data/js/controls.js +++ b/data/js/controls.js @@ -433,24 +433,27 @@ function start() { case UI_MIN: if (data.parentControl) { - var parent = $("#id" + data.parentControl + " input"); - if (parent.size()) { - parent.attr("min", data.value); + //Is it applied to a slider? + if($('#sl' + data.parentControl).length) { + $('#sl' + data.parentControl).attr("min", data.value); + } else if($('#num' + data.parentControl).length) { + //Or a number + $('#num' + data.parentControl).attr("min", data.value); } } break; case UI_MAX: if (data.parentControl) { - var parent = $("#id" + data.parentControl + " input"); - if (parent.size()) { - if(!parent.attr("type")) { - //type is not set so therefore it is a text input - parent.attr("maxlength", data.value); - } else { - //type might be range (slider) or number - parent.attr("max", data.value); - } + //Is it applied to a slider? + if($('#sl' + data.parentControl).length) { + $('#sl' + data.parentControl).attr("max", data.value); + } else if($('#text' + data.parentControl).length) { + //Is it a text element + $('#text' + data.parentControl).attr("maxlength", data.value); + } else if($('#num' + data.parentControl).length) { + //Or a number + $('#num' + data.parentControl).attr("max", data.value); } } break; @@ -568,7 +571,13 @@ function start() { break; } + if (data.type >= UI_TITEL && data.type < UPDATE_OFFSET) { + //A UI element was just added to the DOM + processEnabled(data); + } + if (data.type >= UPDATE_OFFSET && data.type < UI_INITIAL_GUI) { + //An "update" message was just recieved and processed var element = $("#id" + data.id); if(data.hasOwnProperty('panelStyle')) { @@ -593,6 +602,8 @@ function start() { ); element.addClass(colorClass(data.color)); } + + processEnabled(data); } $(".range-slider__range").each(function(){ @@ -639,27 +650,29 @@ function buttonclick(number, isdown) { } function padclick(type, number, isdown) { - switch (type) { - case CENTER: - if (isdown) websock.send("pcdown:" + number); - else websock.send("pcup:" + number); - break; - case UP: - if (isdown) websock.send("pfdown:" + number); - else websock.send("pfup:" + number); - break; - case DOWN: - if (isdown) websock.send("pbdown:" + number); - else websock.send("pbup:" + number); - break; - case LEFT: - if (isdown) websock.send("pldown:" + number); - else websock.send("plup:" + number); - break; - case RIGHT: - if (isdown) websock.send("prdown:" + number); - else websock.send("prup:" + number); - break; + if(!$("#id" + number + " nav").hasClass("disabled")) { + switch (type) { + case CENTER: + if (isdown) websock.send("pcdown:" + number); + else websock.send("pcup:" + number); + break; + case UP: + if (isdown) websock.send("pfdown:" + number); + else websock.send("pfup:" + number); + break; + case DOWN: + if (isdown) websock.send("pbdown:" + number); + else websock.send("pbup:" + number); + break; + case LEFT: + if (isdown) websock.send("pldown:" + number); + else websock.send("plup:" + number); + break; + case RIGHT: + if (isdown) websock.send("prdown:" + number); + else websock.send("prup:" + number); + break; + } } } @@ -816,4 +829,60 @@ var elementHTML = function(data) { default: return ""; } -} \ No newline at end of file +} + + + +var processEnabled = function(data) { + //Handle the enabling and disabling of controls + //Most controls can be disabled through the use of $("#").prop("disabled", true) and CSS will style it accordingly + //The switcher and pads also require the addition of the "disabled" class + switch(data.type) { + case UI_SWITCHER: + case UPDATE_SWITCHER: + if(data.enabled) { + $("#sl" + data.id).removeClass('disabled'); + $("#s" + data.id).prop("disabled", false); + } else { + $("#sl" + data.id).addClass('disabled'); + $("#s" + data.id).prop("disabled", true); + } + break; + + case UI_SLIDER: + case UPDATE_SLIDER: + $("#sl" + data.id).prop("disabled", !data.enabled); + break; + + case UI_NUMBER: + case UPDATE_NUMBER: + $("#num" + data.id).prop("disabled", !data.enabled); + break; + + case UI_TEXT_INPUT: + case UPDATE_TEXT_INPUT: + $("#text" + data.id).prop("disabled", !data.enabled); + break; + + case UI_SELECT: + case UPDATE_SELECT: + $("#select" + data.id).prop("disabled", !data.enabled); + break; + + case UI_BUTTON: + case UPDATE_BUTTON: + $("#btn" + data.id).prop("disabled", !data.enabled); + break; + + case UI_PAD: + case UI_CPAD: + case UPDATE_PAD: + case UPDATE_CPAD: + if(data.enabled) { + $("#id" + data.id + " nav").removeClass('disabled'); + } else { + $("#id" + data.id + " nav").addClass('disabled'); + } + break; + } +} diff --git a/data/js/controls.min.js b/data/js/controls.min.js index d28100b..0288c08 100644 --- a/data/js/controls.min.js +++ b/data/js/controls.min.js @@ -25,8 +25,8 @@ data.selected+ ">"+ data.label+ "");} -break;case UI_MIN:if(data.parentControl){var parent=$("#id"+data.parentControl+" input");if(parent.size()){parent.attr("min",data.value);}} -break;case UI_MAX:if(data.parentControl){var parent=$("#id"+data.parentControl+" input");if(parent.size()){if(!parent.attr("type")){parent.attr("maxlength",data.value);}else{parent.attr("max",data.value);}}} +break;case UI_MIN:if(data.parentControl){if($('#sl'+data.parentControl).length){$('#sl'+data.parentControl).attr("min",data.value);}else if($('#num'+data.parentControl).length){$('#num'+data.parentControl).attr("min",data.value);}} +break;case UI_MAX:if(data.parentControl){if($('#sl'+data.parentControl).length){$('#sl'+data.parentControl).attr("max",data.value);}else if($('#text'+data.parentControl).length){$('#text'+data.parentControl).attr("maxlength",data.value);}else if($('#num'+data.parentControl).length){$('#num'+data.parentControl).attr("max",data.value);}} break;case UI_STEP:if(data.parentControl){var parent=$("#id"+data.parentControl+" input");if(parent.size()){parent.attr("step",data.value);}} break;case UI_GRAPH:if(data.visible){addToHTML(data);graphData[data.id]=restoreGraphData(data.id);renderGraphSvg(graphData[data.id],"graph"+data.id);} break;case ADD_GRAPH_POINT:var ts=Math.round(new Date().getTime()/1000);graphData[data.id].push({x:ts,y:data.value});saveGraphData();renderGraphSvg(graphData[data.id],"graph"+data.id);break;case CLEAR_GRAPH:graphData[data.id]=[];saveGraphData();renderGraphSvg(graphData[data.id],"graph"+data.id);break;case UI_ACCEL:if(hasAccel)break;hasAccel=true;if(data.visible){addToHTML(data);requestOrientationPermission();} @@ -40,11 +40,13 @@ break;case UPDATE_SELECT:$("#select"+data.id).val(data.value);if(data.hasOwnProp break;case UPDATE_BUTTON:$("#btn"+data.id).val(data.value);$("#btn"+data.id).text(data.value);if(data.hasOwnProperty('elementStyle')){$("#btn"+data.id).attr("style",data.elementStyle);} break;case UPDATE_PAD:case UPDATE_CPAD:break;case UPDATE_GAUGE:$("#gauge"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#gauge"+data.id).attr("style",data.elementStyle);} break;case UPDATE_ACCEL:break;case UPDATE_TIME:var rv=new Date().toISOString();websock.send("time:"+rv+":"+data.id);break;default:console.error("Unknown type or event");break;} +if(data.type>=UI_TITEL&&data.type=UPDATE_OFFSET&&data.type0){var parent=data.hasOwnProperty('parentControl')?$("#tab"+data.parentControl):$("#row");var html="";switch(data.type){case UI_LABEL:case UI_BUTTON:case UI_SWITCHER:case UI_CPAD:case UI_PAD:case UI_SLIDER:case UI_NUMBER:case UI_TEXT_INPUT:case UI_SELECT:case UI_GRAPH:case UI_GAUGE:case UI_ACCEL:html="
";case UI_SELECT:return"";case UI_ACCEL:return"ACCEL // Not implemented fully!
";default:return"";}}
\ No newline at end of file
+"' >
";default:return"";}}
+var processEnabled=function(data){switch(data.type){case UI_SWITCHER:case UPDATE_SWITCHER:if(data.enabled){$("#sl"+data.id).removeClass('disabled');$("#s"+data.id).prop("disabled",false);}else{$("#sl"+data.id).addClass('disabled');$("#s"+data.id).prop("disabled",true);}
+break;case UI_SLIDER:case UPDATE_SLIDER:$("#sl"+data.id).prop("disabled",!data.enabled);break;case UI_NUMBER:case UPDATE_NUMBER:$("#num"+data.id).prop("disabled",!data.enabled);break;case UI_TEXT_INPUT:case UPDATE_TEXT_INPUT:$("#text"+data.id).prop("disabled",!data.enabled);break;case UI_SELECT:case UPDATE_SELECT:$("#select"+data.id).prop("disabled",!data.enabled);break;case UI_BUTTON:case UPDATE_BUTTON:$("#btn"+data.id).prop("disabled",!data.enabled);break;case UI_PAD:case UI_CPAD:case UPDATE_PAD:case UPDATE_CPAD:if(data.enabled){$("#id"+data.id+" nav").removeClass('disabled');}else{$("#id"+data.id+" nav").addClass('disabled');}
+break;}}
\ No newline at end of file
diff --git a/src/ESPUI.cpp b/src/ESPUI.cpp
index dd55063..b8978dc 100644
--- a/src/ESPUI.cpp
+++ b/src/ESPUI.cpp
@@ -783,6 +783,7 @@ void ESPUIClass::updateControl(Control* control, int clientId)
     root["id"] = control->id;
     root["visible"] = control->visible;
     root["color"] = (int)control->color;
+    root["enabled"] = control->enabled;
     if (control->panelStyle.length())
         root["panelStyle"] = control->panelStyle;
     if (control->elementStyle.length())
@@ -855,6 +856,16 @@ void ESPUIClass::setPanelWide(uint16_t id, bool wide) {
     }
 }
 
+void ESPUIClass::setEnabled(uint16_t id, bool enabled, int clientId) {
+    Control* control = getControl(id);
+    if (control)
+    {
+        control->enabled = enabled;
+        updateControl(control, clientId);
+    }
+}
+
+
 void ESPUIClass::setVertical(uint16_t id, bool vert) {
     Control* control = getControl(id);
     if (control)
@@ -1108,6 +1119,7 @@ void ESPUIClass::prepareJSONChunk(AsyncWebSocketClient* client, uint16_t startin
         item["value"] = String(control->value);
         item["color"] = (int)control->color;
         item["visible"] = (int)control->visible;
+        item["enabled"] = control->enabled;
         if (control->panelStyle.length())
             item["panelStyle"] = String(control->panelStyle);
         if (control->elementStyle.length())
diff --git a/src/ESPUI.h b/src/ESPUI.h
index c913d39..61e64b7 100644
--- a/src/ESPUI.h
+++ b/src/ESPUI.h
@@ -142,6 +142,7 @@ public:
     bool visible;
     bool wide;
     bool vertical;
+    bool enabled;
     uint16_t parentControl;
     String panelStyle;
     String elementStyle;
@@ -301,6 +302,8 @@ public:
 
     void setPanelWide(uint16_t id, bool wide);
     void setVertical(uint16_t id, bool vert = true);
+    void setEnabled(uint16_t id, bool enabled = true, int clientId = -1);
+
     void updateVisibility(uint16_t id, bool visibility, int clientId = -1);
 
     // Variables
diff --git a/src/dataControlsJS.h b/src/dataControlsJS.h
index 8ae2444..82643c1 100644
--- a/src/dataControlsJS.h
+++ b/src/dataControlsJS.h
@@ -26,8 +26,8 @@ data.selected+
 ">"+
 data.label+
 "");}
-break;case UI_MIN:if(data.parentControl){var parent=$("#id"+data.parentControl+" input");if(parent.size()){parent.attr("min",data.value);}}
-break;case UI_MAX:if(data.parentControl){var parent=$("#id"+data.parentControl+" input");if(parent.size()){if(!parent.attr("type")){parent.attr("maxlength",data.value);}else{parent.attr("max",data.value);}}}
+break;case UI_MIN:if(data.parentControl){if($('#sl'+data.parentControl).length){$('#sl'+data.parentControl).attr("min",data.value);}else if($('#num'+data.parentControl).length){$('#num'+data.parentControl).attr("min",data.value);}}
+break;case UI_MAX:if(data.parentControl){if($('#sl'+data.parentControl).length){$('#sl'+data.parentControl).attr("max",data.value);}else if($('#text'+data.parentControl).length){$('#text'+data.parentControl).attr("maxlength",data.value);}else if($('#num'+data.parentControl).length){$('#num'+data.parentControl).attr("max",data.value);}}
 break;case UI_STEP:if(data.parentControl){var parent=$("#id"+data.parentControl+" input");if(parent.size()){parent.attr("step",data.value);}}
 break;case UI_GRAPH:if(data.visible){addToHTML(data);graphData[data.id]=restoreGraphData(data.id);renderGraphSvg(graphData[data.id],"graph"+data.id);}
 break;case ADD_GRAPH_POINT:var ts=Math.round(new Date().getTime()/1000);graphData[data.id].push({x:ts,y:data.value});saveGraphData();renderGraphSvg(graphData[data.id],"graph"+data.id);break;case CLEAR_GRAPH:graphData[data.id]=[];saveGraphData();renderGraphSvg(graphData[data.id],"graph"+data.id);break;case UI_ACCEL:if(hasAccel)break;hasAccel=true;if(data.visible){addToHTML(data);requestOrientationPermission();}
@@ -41,11 +41,13 @@ break;case UPDATE_SELECT:$("#select"+data.id).val(data.value);if(data.hasOwnProp
 break;case UPDATE_BUTTON:$("#btn"+data.id).val(data.value);$("#btn"+data.id).text(data.value);if(data.hasOwnProperty('elementStyle')){$("#btn"+data.id).attr("style",data.elementStyle);}
 break;case UPDATE_PAD:case UPDATE_CPAD:break;case UPDATE_GAUGE:$("#gauge"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#gauge"+data.id).attr("style",data.elementStyle);}
 break;case UPDATE_ACCEL:break;case UPDATE_TIME:var rv=new Date().toISOString();websock.send("time:"+rv+":"+data.id);break;default:console.error("Unknown type or event");break;}
+if(data.type>=UI_TITEL&&data.type=UPDATE_OFFSET&&data.type0){var parent=data.hasOwnProperty('parentControl')?$("#tab"+data.parentControl):$("#row");var html="";switch(data.type){case UI_LABEL:case UI_BUTTON:case UI_SWITCHER:case UI_CPAD:case UI_PAD:case UI_SLIDER:case UI_NUMBER:case UI_TEXT_INPUT:case UI_SELECT:case UI_GRAPH:case UI_GAUGE:case UI_ACCEL:html="
";case UI_GRAPH:return"
"+data.label+"
";case UI_GAUGE:return"WILL BE A GAUGE ";case UI_ACCEL:return"ACCEL // Not implemented fully!
";default:return"";}}
+var processEnabled=function(data){switch(data.type){case UI_SWITCHER:case UPDATE_SWITCHER:if(data.enabled){$("#sl"+data.id).removeClass('disabled');$("#s"+data.id).prop("disabled",false);}else{$("#sl"+data.id).addClass('disabled');$("#s"+data.id).prop("disabled",true);}
+break;case UI_SLIDER:case UPDATE_SLIDER:$("#sl"+data.id).prop("disabled",!data.enabled);break;case UI_NUMBER:case UPDATE_NUMBER:$("#num"+data.id).prop("disabled",!data.enabled);break;case UI_TEXT_INPUT:case UPDATE_TEXT_INPUT:$("#text"+data.id).prop("disabled",!data.enabled);break;case UI_SELECT:case UPDATE_SELECT:$("#select"+data.id).prop("disabled",!data.enabled);break;case UI_BUTTON:case UPDATE_BUTTON:$("#btn"+data.id).prop("disabled",!data.enabled);break;case UI_PAD:case UI_CPAD:case UPDATE_PAD:case UPDATE_CPAD:if(data.enabled){$("#id"+data.id+" nav").removeClass('disabled');}else{$("#id"+data.id+" nav").addClass('disabled');}
+break;}}
 )=====";
 
-const uint8_t JS_CONTROLS_GZIP[3973] PROGMEM = { 31,139,8,0,94,78,244,97,2,255,197,91,235,119,218,198,18,255,238,191,66,86,122,130,184,198,60,242,106,2,150,115,8,38,9,45,54,190,6,55,61,55,205,245,17,176,24,29,11,73,149,132,177,235,240,191,223,217,217,135,118,133,192,20,183,189,95,98,52,59,154,253,237,204,238,206,75,25,5,126,156,24,151,157,171,206,89,103,208,105,118,175,62,93,118,236,23,213,106,99,36,6,46,218,221,94,243,4,104,53,65,59,63,105,14,218,87,189,143,31,251,237,129,93,83,121,219,191,14,218,103,39,76,70,77,161,15,58,131,118,215,86,8,231,32,49,35,15,73,233,36,157,171,22,165,188,208,153,90,140,235,69,202,245,225,114,48,232,157,217,47,117,62,78,173,85,95,166,156,221,230,7,0,241,74,103,100,196,90,245,85,202,215,255,210,25,180,62,183,47,236,215,58,171,164,215,170,175,21,238,110,231,4,104,111,50,188,140,90,171,190,73,57,207,46,79,63,0,237,71,157,147,83,107,213,31,21,117,129,30,193,32,231,151,3,251,173,206,173,140,212,170,111,211,55,62,93,52,207,63,219,239,56,161,121,114,194,40,87,231,189,206,25,101,229,3,173,110,187,121,193,153,107,213,119,202,140,205,15,118,45,99,16,70,83,12,210,111,119,219,45,144,150,177,137,32,215,20,171,244,206,7,29,170,255,140,89,4,185,166,152,229,180,3,132,140,85,144,86,83,108,114,218,252,213,174,101,236,129,180,154,106,138,65,251,220,174,101,45,129,196,154,98,135,79,205,203,79,109,187,150,177,3,167,214,20,51,52,91,45,186,55,50,38,224,212,218,91,85,49,231,205,139,230,160,7,102,124,151,213,141,28,169,169,234,238,156,182,225,68,101,244,77,137,53,133,42,15,204,73,239,203,153,60,46,221,246,199,129,60,22,23,157,79,159,7,114,243,183,218,103,3,216,75,66,111,173,171,193,229,197,191,47,123,157,126,91,138,106,93,181,79,219,23,205,110,122,252,90,87,231,109,120,235,162,243,11,188,250,66,18,191,180,7,205,254,249,231,102,87,17,127,213,191,60,251,216,237,125,209,230,104,53,47,46,122,3,121,88,90,87,205,110,231,63,205,11,176,224,27,73,58,105,94,252,44,55,126,235,234,172,119,6,203,127,253,186,113,235,68,198,117,228,132,211,19,39,113,108,159,44,140,102,20,57,247,86,17,71,166,78,220,28,141,136,103,79,28,47,38,72,138,61,119,76,162,86,224,39,174,63,15,230,49,31,154,204,253,81,226,6,190,49,10,188,32,106,121,78,28,91,248,179,51,46,62,240,31,246,217,124,54,36,145,164,55,226,133,155,140,166,10,159,19,19,85,103,245,136,36,243,200,55,225,159,223,231,129,27,19,179,193,89,184,10,5,3,153,145,200,241,198,114,56,213,167,224,8,73,66,162,200,189,37,145,100,74,245,43,152,22,36,113,226,112,234,120,137,100,146,250,22,60,241,220,159,120,193,66,145,195,212,47,198,71,78,20,5,233,251,194,20,98,216,241,220,63,156,200,245,37,3,53,76,157,255,166,86,17,140,99,39,186,49,27,99,50,113,230,94,34,136,102,99,185,220,163,86,88,144,97,28,140,110,26,202,111,48,137,79,70,9,25,103,45,18,145,223,231,36,78,122,145,75,252,196,161,164,115,18,205,220,56,134,95,86,241,97,185,39,57,99,231,150,124,18,155,1,134,188,96,228,120,253,36,136,156,107,82,142,73,210,73,200,204,50,73,28,206,93,220,51,177,89,250,169,223,59,43,199,9,172,232,218,157,220,91,114,43,21,139,13,69,112,4,243,7,145,34,219,5,107,227,110,130,25,199,184,245,180,185,174,115,231,74,133,55,220,137,37,95,221,183,253,185,231,21,31,82,89,8,42,116,162,152,164,92,197,6,211,97,58,229,87,119,252,13,64,50,242,215,111,89,188,78,148,128,10,126,176,198,193,104,62,3,205,21,203,206,120,108,153,255,50,139,229,96,50,129,3,242,131,101,62,139,130,5,60,79,147,153,103,153,102,177,193,77,81,30,121,1,204,13,27,156,73,81,69,195,9,236,131,21,230,113,27,246,73,4,51,172,49,31,149,46,121,97,142,136,204,130,91,194,14,150,137,39,230,240,58,34,196,55,139,43,172,128,83,227,139,200,56,135,139,129,70,20,70,197,56,11,12,142,128,130,124,254,236,237,155,151,175,27,57,111,165,75,215,168,190,245,48,242,220,209,77,157,107,174,180,212,22,61,117,252,177,71,126,113,99,119,232,122,110,114,223,2,194,53,40,232,1,236,184,159,85,192,243,231,251,66,231,229,169,59,30,19,191,248,32,13,66,15,64,186,95,185,145,36,59,172,188,125,11,63,186,110,156,16,31,174,26,243,86,206,57,194,57,205,82,62,150,18,106,29,55,214,194,245,199,193,162,76,55,36,157,165,28,6,81,178,111,155,230,247,239,249,35,111,171,235,70,94,189,122,41,237,139,119,235,23,50,236,195,111,146,88,230,34,174,87,42,230,65,246,197,105,16,39,190,51,35,7,102,125,117,144,74,61,48,43,11,80,121,99,73,0,239,206,194,185,140,61,177,97,3,63,8,137,111,11,205,90,228,54,161,215,182,31,7,30,129,247,175,65,36,227,52,40,223,22,123,110,221,222,76,200,29,224,147,182,78,207,76,186,255,147,104,78,26,203,70,10,13,79,211,54,216,144,17,68,102,207,152,38,141,80,218,6,105,148,144,39,129,249,67,186,119,112,139,61,38,129,178,143,51,151,17,12,148,199,120,23,209,81,98,203,125,59,12,198,247,72,27,193,19,137,96,179,9,223,72,217,203,201,125,72,184,119,212,243,132,122,206,29,68,73,137,51,140,125,231,54,143,12,64,225,104,36,234,16,236,121,156,38,235,218,225,74,205,58,251,92,62,216,71,72,167,162,163,192,139,203,147,32,106,59,0,158,120,132,46,207,62,198,187,30,60,217,29,83,221,3,101,175,103,92,7,103,46,150,150,13,69,205,150,124,11,108,144,66,77,130,196,241,196,124,199,150,62,189,71,252,235,100,122,88,43,202,195,7,206,203,135,187,123,238,6,55,112,172,214,178,195,66,134,17,113,110,26,66,213,105,54,85,255,255,174,144,233,157,94,119,112,164,201,221,193,78,43,222,230,253,85,29,176,236,179,158,189,75,34,226,5,206,24,78,134,206,141,121,102,93,110,236,196,77,60,194,118,141,231,12,137,135,219,112,230,184,254,103,226,192,30,18,187,48,101,200,202,195,236,176,46,158,88,170,38,31,211,92,76,146,88,42,36,31,49,167,80,6,121,46,80,23,90,70,247,224,145,34,92,95,131,224,243,224,180,107,177,243,169,131,96,185,236,202,75,15,217,183,232,226,134,137,111,30,32,27,196,56,232,24,147,96,62,154,162,238,235,233,157,81,124,32,229,48,34,212,236,39,44,198,163,170,156,39,9,189,238,192,145,90,92,68,137,222,134,96,148,18,74,1,155,238,34,131,251,182,37,243,202,250,218,68,78,253,248,234,216,141,4,78,85,136,101,236,142,135,0,51,98,105,153,64,234,157,254,222,74,121,225,100,103,221,133,206,152,45,250,242,188,180,171,238,242,100,168,186,67,136,222,211,33,210,4,242,233,32,53,41,43,48,163,167,195,196,212,246,233,56,117,49,43,64,135,79,7,74,179,243,167,227,212,164,172,192,28,61,29,38,43,14,60,29,104,70,206,198,211,141,85,176,199,15,95,68,99,224,62,250,117,107,127,37,14,88,17,59,104,126,88,149,169,7,30,78,24,162,7,58,242,220,227,35,199,8,252,25,72,34,243,208,46,0,15,91,135,212,232,129,89,44,24,211,136,76,236,2,149,160,208,11,199,252,1,175,153,3,243,168,226,28,31,85,64,100,110,68,35,231,28,187,183,134,59,198,169,52,97,71,21,24,161,239,210,247,108,16,80,214,5,192,211,144,140,91,236,217,130,252,55,8,235,212,76,203,34,198,109,150,233,132,46,155,217,1,238,137,235,65,176,102,73,179,209,52,5,83,204,31,172,100,234,198,128,39,73,32,5,161,11,51,139,182,109,67,36,76,215,125,152,4,135,236,46,133,116,30,55,147,137,116,179,164,110,0,26,79,0,28,59,140,130,89,8,33,243,192,25,26,73,96,176,23,233,47,203,199,106,138,1,233,27,236,201,247,44,142,219,167,235,41,51,38,120,195,130,71,136,9,28,143,68,84,196,212,73,168,76,99,28,144,216,240,131,196,32,119,144,40,25,245,223,126,195,100,32,103,207,229,108,41,86,65,148,230,135,200,22,222,104,177,72,130,193,102,36,170,222,103,49,196,60,163,132,219,64,103,109,176,199,212,104,65,136,73,29,181,27,251,105,30,236,9,219,237,153,5,3,183,128,93,16,84,182,35,232,128,160,176,201,8,229,62,22,52,12,42,128,112,84,97,50,143,205,213,21,157,118,182,93,142,59,206,91,202,129,105,184,126,56,79,152,9,248,178,98,247,15,72,112,139,15,98,149,184,21,102,174,111,234,110,115,5,75,243,215,191,15,11,221,32,26,30,154,88,152,43,32,157,59,22,15,102,160,98,194,153,229,204,46,103,229,2,26,180,207,255,33,229,66,202,31,62,162,93,172,187,63,126,27,202,66,211,87,190,255,190,217,43,21,44,225,12,26,128,0,110,75,28,232,223,94,91,171,239,150,76,164,165,254,67,223,128,153,86,65,29,15,126,108,159,58,201,180,28,5,115,56,26,52,185,7,137,176,98,90,24,27,184,51,248,85,169,85,171,213,60,164,229,112,30,79,173,135,187,122,18,151,238,235,169,54,224,36,103,202,123,187,32,87,112,43,157,140,122,142,194,190,126,251,139,231,19,237,0,106,62,81,151,46,178,113,89,166,198,210,193,227,206,110,99,65,52,115,61,40,77,42,204,182,213,240,47,205,93,248,134,19,83,3,160,222,194,63,143,130,16,46,222,123,171,192,51,191,126,114,239,145,66,145,185,74,85,144,216,192,48,204,119,176,250,70,62,36,25,184,111,136,203,193,231,84,205,247,213,122,237,207,65,139,159,140,141,133,29,107,100,33,52,237,164,238,177,144,227,138,150,56,45,237,46,128,183,20,198,146,9,219,222,84,106,117,255,220,146,120,234,73,101,129,227,85,132,1,176,157,247,128,46,105,23,88,74,10,140,241,16,185,75,254,34,108,25,81,59,109,3,150,140,175,4,2,79,133,182,34,108,23,112,60,169,95,205,217,179,200,86,57,176,136,185,43,120,93,212,46,200,211,212,58,109,201,215,87,217,88,237,131,78,121,237,204,175,201,95,164,251,172,172,93,22,192,238,241,156,205,220,57,109,163,255,139,110,109,197,233,37,65,167,223,235,99,25,205,74,123,44,172,192,149,128,55,172,155,7,209,45,22,204,51,126,67,116,207,68,113,22,75,191,150,121,233,223,248,193,194,55,104,244,67,195,103,140,121,77,241,210,114,79,150,224,96,252,216,214,62,182,120,254,92,142,28,233,165,88,22,206,136,122,96,246,14,91,171,226,208,241,137,167,41,88,125,45,71,187,233,11,69,5,106,86,44,247,125,5,22,244,81,150,175,146,246,173,184,183,50,79,60,13,22,160,91,26,226,173,14,78,225,110,182,138,25,197,216,182,118,215,67,198,202,150,174,55,170,216,189,126,40,27,184,188,125,124,200,27,182,226,49,237,206,10,74,218,138,21,20,217,120,21,4,214,105,21,79,178,177,74,87,65,68,55,72,135,97,30,40,221,105,94,1,133,231,162,8,110,115,151,144,98,23,160,21,180,42,76,137,143,3,219,132,104,45,142,37,85,127,25,211,241,67,238,20,175,240,9,242,77,66,43,206,74,182,201,211,204,175,213,111,220,219,235,121,39,115,179,244,254,98,84,159,222,90,60,104,201,229,100,233,158,210,42,153,145,56,118,174,137,173,84,171,213,174,30,195,199,250,106,60,27,101,167,0,228,217,194,233,114,58,222,57,217,195,27,123,56,51,28,92,248,139,7,152,115,55,254,180,18,244,208,34,171,25,158,200,74,228,108,154,13,200,209,49,111,130,238,175,67,174,204,66,221,196,134,57,152,131,221,52,73,178,205,36,162,154,146,59,5,173,127,108,156,193,25,110,49,7,243,183,155,12,205,29,242,70,99,111,49,145,90,188,102,195,37,55,30,195,93,141,215,24,255,169,139,29,82,154,34,141,30,100,35,195,50,15,243,167,147,21,53,122,161,149,50,19,242,6,156,210,123,99,117,183,250,58,36,225,232,113,40,225,72,195,162,185,192,245,130,39,91,8,158,172,19,76,203,154,235,69,111,161,190,112,184,78,52,173,64,175,23,237,109,33,218,91,39,26,139,198,235,101,71,91,200,142,114,100,107,95,15,136,188,137,27,62,134,92,144,224,70,195,95,54,255,172,132,22,77,178,151,25,184,91,209,237,158,146,209,13,237,99,103,59,111,177,3,179,220,18,253,78,211,132,40,45,115,33,68,239,234,11,73,174,255,168,44,253,235,144,84,28,202,51,210,37,213,210,108,104,19,140,44,79,8,129,69,58,46,42,215,25,217,213,85,217,107,96,61,34,94,20,180,217,167,78,74,105,58,237,185,187,241,137,27,143,34,146,240,74,41,50,217,107,189,134,242,229,218,104,104,43,222,67,115,97,186,43,129,16,136,46,32,244,156,17,177,42,255,253,237,228,160,114,93,50,209,75,178,114,57,182,1,176,54,85,207,241,71,170,183,165,20,238,136,150,75,94,108,95,235,200,214,188,72,35,72,29,224,200,241,188,161,51,186,233,19,8,94,247,109,147,90,197,100,251,85,85,143,120,41,69,43,20,177,20,251,77,101,97,186,208,120,246,214,207,91,226,179,54,150,75,241,141,132,172,182,164,122,198,178,203,67,26,185,218,143,134,194,239,77,3,131,94,90,238,205,132,189,7,180,226,91,55,205,6,146,22,0,51,95,28,29,161,130,232,95,228,167,138,89,51,177,82,111,44,20,191,127,151,174,51,167,106,201,123,229,199,85,173,126,185,141,220,247,155,196,166,95,114,176,15,77,192,250,155,191,2,209,27,227,60,153,93,105,234,174,109,199,102,26,68,187,55,216,177,254,151,223,110,103,105,30,91,138,108,201,40,153,5,90,242,64,181,172,49,162,87,133,93,72,22,1,253,144,116,62,243,99,193,65,205,72,25,156,104,108,36,236,51,25,90,248,207,15,164,177,215,51,125,45,154,71,172,9,96,30,85,128,116,52,141,42,180,59,192,67,242,180,44,136,77,2,108,15,101,170,142,233,87,3,187,44,37,102,159,212,161,72,177,38,218,213,130,217,54,0,204,71,130,249,177,200,82,245,246,9,133,38,142,243,86,117,245,108,255,101,69,31,242,2,86,70,178,71,154,14,131,38,184,18,84,238,13,231,92,175,42,172,156,116,117,88,158,245,199,206,1,255,62,246,40,6,19,160,109,192,187,8,171,104,2,247,164,97,80,231,6,254,123,184,136,156,112,181,213,72,133,29,155,217,175,64,196,84,44,86,197,201,176,164,179,110,58,222,249,164,1,11,112,42,1,46,123,165,100,160,55,165,109,45,83,237,146,230,113,50,199,88,56,214,91,96,128,148,49,43,88,229,5,32,208,178,213,82,176,241,227,170,225,77,70,241,221,144,40,37,215,204,247,210,73,131,81,224,196,172,41,62,192,31,23,188,4,26,151,62,28,138,80,203,224,239,153,252,4,208,147,196,231,116,125,78,67,31,133,181,25,187,128,179,13,131,187,2,67,46,128,7,126,139,234,69,0,165,223,121,50,13,97,196,134,13,193,71,144,155,226,136,29,85,80,51,138,234,86,174,74,161,66,223,145,96,249,135,83,112,201,204,61,134,90,235,114,51,91,171,95,147,24,186,177,41,66,83,49,118,46,43,183,54,46,157,126,24,195,90,216,207,159,189,123,243,186,218,72,27,225,143,205,206,62,191,216,22,64,134,91,195,16,237,140,1,63,85,217,22,130,206,172,33,240,118,70,128,31,119,108,139,64,103,214,16,12,55,34,168,176,237,160,85,201,216,142,122,111,2,180,116,247,76,220,104,86,88,3,149,127,222,177,37,86,206,157,143,118,36,208,246,126,166,64,197,233,59,170,192,94,86,111,11,22,4,136,141,174,156,74,53,154,78,143,213,22,7,158,191,161,31,119,118,180,245,75,136,29,116,156,167,96,204,92,80,68,21,254,58,119,118,161,86,173,42,77,127,245,194,67,109,232,126,34,15,48,15,255,225,148,162,91,200,229,64,137,57,55,42,222,253,194,11,103,162,35,161,39,182,28,238,189,48,240,168,15,33,91,184,105,172,92,173,38,46,26,139,74,252,99,6,182,108,150,0,173,93,37,220,255,24,141,11,70,158,167,48,213,129,141,43,10,54,37,84,219,21,31,43,72,101,191,182,88,7,73,169,110,229,2,226,129,162,244,204,88,34,250,19,104,68,77,137,227,73,39,214,170,81,185,83,179,160,84,204,60,113,175,231,17,65,153,188,189,204,63,6,130,129,145,195,191,10,201,196,97,202,16,62,128,0,85,62,134,185,92,254,151,78,183,107,124,104,27,77,3,201,198,38,181,35,6,214,64,249,187,246,1,11,186,57,54,124,48,42,244,191,119,192,185,155,133,76,203,100,108,76,192,81,222,239,171,39,221,161,13,116,18,5,51,90,220,102,72,145,36,145,30,171,220,67,200,1,165,30,153,35,13,65,199,121,178,130,121,66,63,223,144,204,33,170,50,231,63,54,253,15,18,205,77,92,9,59,0,0 };
+const uint8_t JS_CONTROLS_GZIP[4173] PROGMEM = { 31,139,8,0,202,202,6,98,2,255,197,27,105,119,218,72,242,187,127,133,172,228,5,177,198,6,114,77,6,44,231,17,76,18,118,124,173,141,39,243,54,147,245,19,208,24,61,11,73,35,9,31,227,240,223,183,186,250,80,183,14,32,120,102,247,75,140,170,171,171,171,171,170,187,174,206,40,240,227,196,184,236,95,245,79,250,131,126,231,232,234,211,101,223,126,217,104,180,71,98,224,188,119,116,218,57,4,88,83,192,206,14,59,131,222,213,233,199,143,23,189,129,221,84,113,123,191,13,122,39,135,140,70,83,129,15,250,131,222,145,173,0,206,128,98,134,30,130,210,69,250,87,93,10,121,169,35,117,25,214,203,20,235,195,229,96,112,122,98,191,210,241,56,180,217,120,149,98,30,117,62,0,19,175,117,68,6,108,54,94,167,120,23,95,250,131,238,231,222,185,253,70,71,149,240,102,227,141,130,125,212,63,4,216,219,12,46,131,54,27,111,83,204,147,203,227,15,0,251,73,199,228,208,102,227,39,69,92,32,71,80,200,217,229,192,126,167,99,43,35,205,198,187,116,198,167,243,206,217,103,251,103,14,232,28,30,50,200,213,217,105,255,132,162,242,129,238,81,175,115,206,145,155,141,159,149,21,59,31,236,102,70,33,12,166,40,228,162,119,212,235,2,181,140,78,4,184,169,104,229,244,108,208,167,242,207,168,69,128,155,138,90,142,251,0,200,104,5,97,77,69,39,199,157,223,236,102,70,31,8,107,170,170,24,244,206,236,102,86,19,8,108,42,122,248,212,185,252,212,179,155,25,61,112,104,83,81,67,167,219,165,182,145,81,1,135,54,223,169,130,57,235,156,119,6,167,160,198,159,179,178,145,35,77,85,220,253,227,30,156,168,140,188,41,176,169,64,229,129,57,60,253,114,34,143,203,81,239,227,64,30,139,243,254,167,207,3,105,252,221,222,201,0,108,73,200,173,123,53,184,60,255,215,229,105,255,162,39,73,117,175,122,199,189,243,206,81,122,252,186,87,103,61,152,117,222,255,21,166,190,148,192,47,189,65,231,226,236,115,231,72,33,127,117,113,121,242,241,232,244,139,182,70,183,115,126,126,58,144,135,165,123,213,57,234,255,187,115,14,26,124,43,65,135,157,243,95,164,225,119,175,78,78,79,96,251,111,222,180,111,157,200,184,142,156,112,122,232,36,142,237,147,59,163,19,69,206,131,85,197,145,169,19,119,70,35,226,217,19,199,139,9,130,98,207,29,147,168,27,248,137,235,207,131,121,204,135,38,115,127,148,184,129,111,140,2,47,136,186,158,19,199,22,254,236,143,171,143,252,135,125,50,159,13,73,36,225,237,248,206,77,70,83,5,207,137,137,42,179,86,68,146,121,228,155,240,207,31,243,192,141,137,217,230,40,92,132,2,129,204,72,228,120,99,57,156,202,83,96,132,36,33,81,228,222,146,72,34,165,242,21,72,119,36,113,226,112,234,120,137,68,146,242,22,56,241,220,159,120,193,157,66,135,137,95,140,143,156,40,10,210,249,66,21,98,216,241,220,63,157,200,245,37,2,85,76,139,255,166,90,17,136,99,39,186,49,219,99,50,113,230,94,34,128,102,123,177,216,162,90,184,35,195,56,24,221,180,149,223,160,18,159,140,18,50,206,106,36,34,127,204,73,156,156,70,46,241,19,135,130,206,72,52,115,227,24,126,89,213,199,197,150,196,140,157,91,242,73,24,3,12,121,193,200,241,46,146,32,114,174,201,94,76,146,126,66,102,150,73,226,112,238,162,205,196,102,237,159,23,167,39,123,113,2,59,186,118,39,15,150,52,165,106,181,173,16,142,96,253,32,82,104,187,160,109,180,38,88,113,140,166,167,173,117,93,184,86,74,188,237,78,44,57,117,219,246,231,158,87,125,76,105,33,83,161,19,197,36,197,170,182,153,12,211,37,191,186,227,111,192,36,3,127,253,150,229,215,137,18,16,193,115,107,28,140,230,51,144,92,117,207,25,143,45,243,31,102,117,47,152,76,224,128,60,183,204,103,81,112,7,223,211,100,230,89,166,89,109,115,85,236,141,188,0,214,6,3,103,84,84,210,112,2,47,64,11,243,184,7,118,18,193,10,37,234,163,212,37,46,172,17,145,89,112,75,216,193,50,241,196,236,94,71,132,248,102,53,135,10,124,106,120,17,25,23,96,49,166,145,11,163,110,156,4,6,231,128,50,249,226,217,187,183,175,222,180,11,102,165,91,215,160,190,245,56,242,220,209,77,139,75,174,182,208,54,61,117,252,177,71,126,117,99,119,232,122,110,242,208,5,192,53,8,232,17,244,184,157,21,192,139,23,219,66,230,123,83,119,60,38,126,245,81,42,132,30,128,212,94,185,146,36,58,236,188,119,11,63,142,220,56,33,62,92,53,230,173,92,115,132,107,154,181,98,94,106,40,117,52,172,59,215,31,7,119,123,212,32,233,42,123,97,16,37,219,182,105,126,255,94,60,242,174,81,54,242,250,245,43,169,95,188,91,191,144,225,5,252,38,137,101,222,197,173,122,221,220,201,78,156,6,113,226,59,51,178,99,182,242,131,148,234,142,89,191,3,145,183,23,4,248,221,152,56,167,177,37,12,54,240,131,144,248,182,144,172,69,110,19,122,109,251,113,224,17,152,127,13,36,25,166,65,241,214,176,185,50,219,76,200,61,240,39,117,157,158,153,212,254,147,104,78,218,139,118,202,26,158,166,117,120,67,68,32,153,61,99,26,53,66,97,75,168,81,64,17,5,230,15,169,237,160,137,173,162,64,209,199,153,203,8,6,246,198,120,23,209,81,98,75,187,29,6,227,7,132,141,224,139,68,96,108,194,55,82,244,189,228,33,36,220,59,234,121,66,171,224,14,162,160,196,25,198,190,115,91,4,6,70,225,104,36,234,16,216,60,46,147,117,237,112,165,102,157,125,33,30,216,17,194,41,233,40,240,226,189,73,16,245,28,96,158,120,132,110,207,62,192,187,30,60,217,61,19,221,35,69,111,101,92,7,71,174,214,22,109,69,204,150,156,5,58,72,89,77,130,196,241,196,122,7,150,190,188,71,252,235,100,186,219,172,202,195,7,206,203,135,187,123,238,6,55,112,172,74,209,97,35,195,136,56,55,109,33,234,52,155,106,253,127,119,200,228,78,175,59,56,210,228,126,103,163,29,175,51,63,47,3,150,125,182,178,119,73,68,188,192,25,195,201,208,177,49,207,108,73,195,78,220,196,35,204,106,60,103,72,60,52,195,153,227,250,159,137,3,54,36,172,48,69,200,210,195,236,176,37,190,88,170,38,63,211,92,76,130,88,42,36,63,49,167,80,6,121,46,208,18,82,70,247,224,145,42,92,95,131,224,243,224,248,200,98,231,83,103,130,229,178,185,73,143,217,89,116,115,195,196,55,119,16,13,98,28,116,140,73,48,31,77,81,246,173,244,206,168,62,146,189,48,34,84,237,135,44,198,163,162,156,39,9,189,238,192,145,90,156,68,141,222,134,160,148,26,82,1,157,110,66,131,251,182,5,243,202,250,222,68,78,189,122,119,236,70,2,167,42,200,50,116,199,67,6,51,100,105,153,64,202,157,254,94,75,120,225,100,99,217,133,206,152,109,250,242,172,182,169,236,138,104,168,178,67,22,189,167,179,72,19,200,167,51,169,81,201,177,25,61,157,77,76,109,159,206,167,78,38,199,232,240,233,140,210,236,252,233,124,106,84,114,108,142,158,206,38,43,14,60,157,209,12,157,165,167,27,171,96,171,15,95,68,99,224,11,244,235,214,118,46,14,200,145,29,116,62,228,105,234,129,135,19,134,232,129,246,61,247,96,223,49,2,127,6,148,200,60,180,43,128,195,246,33,37,186,99,86,43,198,52,34,19,187,66,41,40,240,202,1,255,192,107,102,199,220,175,59,7,251,117,32,89,24,209,200,53,199,238,173,225,142,113,41,141,216,126,29,70,232,92,58,207,6,2,123,58,1,248,26,146,113,151,125,91,144,255,6,97,139,170,105,81,197,184,205,50,157,208,101,43,59,128,61,113,61,8,214,44,169,54,154,166,96,138,249,220,74,166,110,12,252,36,9,164,32,116,99,102,213,182,109,136,132,233,190,119,147,96,151,221,165,144,206,163,49,153,8,55,107,170,1,208,120,2,216,177,195,40,152,133,16,50,15,156,161,145,4,6,155,72,127,89,62,86,83,12,72,223,192,38,223,179,56,110,155,238,103,143,33,193,12,11,62,33,38,112,60,18,81,18,83,39,161,52,141,113,64,98,195,15,18,131,220,67,162,100,180,126,255,29,147,129,2,155,43,48,41,86,65,148,234,135,200,22,102,116,89,36,193,216,102,32,42,222,103,49,196,60,163,132,235,64,71,109,179,207,84,105,65,136,73,29,213,27,251,105,238,108,9,221,109,153,21,3,77,192,174,8,40,179,8,58,32,32,108,49,66,177,15,4,12,131,10,0,236,215,25,205,3,51,191,163,227,126,233,118,0,252,220,170,60,139,189,74,209,22,120,220,68,77,191,28,135,25,193,204,245,77,221,97,210,252,205,224,244,65,149,171,23,40,69,42,91,33,183,207,206,111,127,255,62,157,251,37,251,164,217,223,234,21,202,177,228,26,12,253,239,150,104,110,47,185,235,117,208,59,91,243,36,184,227,162,83,176,99,26,174,31,206,19,118,122,249,137,136,221,63,137,5,199,86,28,16,100,38,78,72,184,130,27,236,42,172,190,235,101,25,237,43,63,93,223,236,92,125,78,184,186,54,112,0,190,0,7,46,110,175,173,252,220,154,137,176,212,59,234,199,43,211,8,105,225,181,22,219,199,78,50,221,139,130,57,28,124,90,186,0,138,176,99,90,246,27,184,51,248,85,111,54,26,141,34,78,247,194,121,60,181,30,239,91,73,92,123,104,165,210,128,123,42,83,188,220,132,115,133,111,165,79,211,42,16,216,215,111,127,241,122,162,217,65,213,39,170,238,85,54,46,139,240,88,24,89,237,202,151,150,123,51,151,159,210,130,195,90,130,26,220,166,153,25,55,56,177,52,48,116,122,231,159,69,65,8,110,229,193,170,240,188,246,34,121,240,72,165,202,2,1,149,144,48,96,24,230,22,172,206,40,102,73,166,37,75,178,14,240,168,13,243,125,163,213,252,49,214,226,39,243,198,130,170,18,90,200,154,118,82,183,88,64,117,69,11,184,150,118,23,192,44,5,177,102,130,217,155,74,37,242,127,183,37,158,88,83,90,112,41,42,196,128,177,141,109,64,167,180,9,91,74,130,143,209,30,56,134,191,136,183,12,169,141,204,128,149,26,114,97,206,83,89,203,17,219,132,57,94,178,200,87,36,178,156,229,49,176,68,187,41,243,58,169,77,56,79,11,7,233,131,131,86,30,141,85,118,232,146,215,206,252,154,252,69,178,207,210,218,100,3,236,30,47,48,230,254,113,15,253,95,116,107,43,78,47,9,250,23,167,23,88,36,180,210,14,18,43,223,37,224,13,91,230,78,116,139,237,128,140,223,16,189,65,81,122,198,194,182,101,94,250,55,126,112,231,27,180,104,76,147,3,140,232,77,49,105,177,37,11,140,48,126,96,139,146,221,139,23,18,184,175,61,47,129,48,36,10,70,36,142,123,190,3,254,102,204,189,76,142,142,58,71,35,166,21,172,89,88,36,170,166,217,187,176,84,85,161,227,19,79,83,148,58,173,64,75,233,4,149,213,44,89,238,67,41,77,142,242,85,194,190,85,183,114,235,196,211,224,14,116,68,227,204,252,224,20,238,120,43,43,24,219,214,124,6,228,245,108,235,122,59,143,249,135,93,217,230,230,77,246,93,222,214,22,159,105,15,91,64,210,134,181,128,200,246,180,0,176,126,180,248,146,237,103,186,11,34,122,102,58,27,230,142,210,195,231,117,98,248,174,138,158,83,225,22,82,222,5,211,10,183,42,155,146,63,206,216,50,142,74,249,216,42,177,73,154,209,99,41,99,151,187,220,43,252,130,92,157,208,106,189,146,169,243,20,253,107,227,27,143,37,244,156,157,57,113,122,59,50,168,79,239,68,30,18,21,98,178,84,89,105,51,205,128,61,231,154,216,74,165,95,237,136,50,254,88,79,146,103,242,236,108,0,61,91,184,116,14,199,27,45,123,53,196,30,174,12,215,2,252,197,235,129,99,183,127,88,8,122,224,146,149,12,47,2,72,206,217,50,75,56,71,183,191,140,117,191,140,115,101,21,234,132,150,172,193,220,247,178,69,146,117,22,17,149,168,194,37,104,237,104,233,10,206,112,141,53,152,55,95,166,104,238,238,151,42,123,141,133,212,194,63,27,174,185,241,24,60,1,94,110,252,167,78,118,72,97,10,53,76,160,51,40,243,176,120,57,89,141,164,215,92,45,191,224,182,184,32,217,16,36,186,188,33,233,196,252,202,24,187,49,158,94,56,60,143,188,219,169,52,58,89,145,179,85,198,122,56,90,205,123,56,210,152,215,60,114,57,225,201,26,132,39,101,132,105,13,185,156,244,26,242,14,135,101,164,105,185,191,156,180,183,6,105,175,140,52,86,232,203,105,71,107,208,142,10,104,47,180,183,26,34,143,227,166,18,67,110,74,208,82,240,151,205,31,241,8,203,81,175,191,212,100,128,192,232,134,89,76,230,128,56,176,202,45,209,111,65,141,136,242,64,65,16,209,223,80,8,74,174,191,146,150,254,22,39,37,39,43,80,124,75,205,52,59,91,198,70,22,7,156,91,152,142,139,62,65,134,118,35,79,187,132,173,21,228,69,251,128,61,44,83,26,1,233,11,7,55,62,116,227,81,68,18,94,151,70,36,187,212,207,40,239,4,71,67,91,241,55,154,211,211,157,15,220,20,116,3,161,231,140,136,85,255,207,239,135,59,245,235,154,137,126,149,53,39,176,233,130,181,178,86,129,7,83,253,51,133,112,215,181,88,240,214,70,169,235,43,153,216,198,50,162,202,224,200,241,188,161,51,186,185,32,16,76,111,219,38,213,138,201,236,85,21,143,152,148,114,43,4,177,16,246,166,162,48,89,104,56,91,229,235,214,248,170,237,197,66,188,72,145,213,159,84,206,24,12,61,166,17,176,189,50,164,126,111,26,24,60,211,226,122,38,124,222,161,245,245,150,105,182,17,116,7,108,22,147,163,35,148,16,253,139,248,84,48,37,11,43,245,207,74,245,251,119,233,108,203,203,181,7,13,173,158,186,14,221,247,203,200,166,239,102,216,179,30,208,254,242,55,55,250,51,4,158,92,231,90,232,165,205,239,76,59,110,243,231,12,88,143,44,126,220,192,210,78,182,21,217,0,83,50,20,212,228,142,170,89,99,68,175,10,187,146,220,5,244,217,238,124,230,199,2,131,170,145,34,56,209,216,72,216,163,36,218,102,41,14,200,177,179,54,125,35,90,117,172,229,98,238,215,1,180,63,141,234,180,23,195,67,251,180,76,137,45,25,108,198,101,170,160,233,27,141,77,182,18,179,7,140,72,82,236,137,246,16,97,181,37,12,22,115,130,249,186,200,154,245,102,21,101,77,28,231,181,234,252,217,110,87,78,30,242,2,86,70,178,71,154,14,131,36,184,16,84,236,37,231,92,175,114,228,78,186,58,44,207,250,170,115,192,95,35,239,199,160,2,212,13,120,23,161,21,141,224,150,84,12,202,220,192,127,119,239,34,39,204,55,118,41,177,3,51,251,230,70,44,197,162,91,92,12,75,76,101,203,241,62,51,141,88,0,83,9,137,217,148,154,129,222,148,54,17,77,181,39,93,132,201,28,99,229,64,111,56,2,167,12,89,225,85,94,0,130,91,182,91,202,108,188,90,52,188,165,43,94,105,137,210,118,211,124,47,157,52,40,5,78,76,73,17,3,254,184,224,37,80,185,244,99,87,132,90,6,159,103,242,19,64,79,18,95,211,245,57,12,125,20,214,138,236,10,174,54,12,238,43,140,115,193,120,224,119,169,92,4,163,244,85,45,147,16,70,108,216,126,93,193,185,41,142,216,126,29,37,163,136,46,119,85,10,17,66,182,32,152,229,207,212,224,146,153,123,140,107,237,77,1,211,181,250,118,199,208,149,77,57,52,21,101,23,162,114,109,227,214,233,51,36,246,96,224,197,179,159,223,190,105,180,211,103,7,171,86,103,143,93,214,101,32,131,173,241,16,109,204,3,62,12,90,151,5,29,89,227,192,219,152,3,124,74,179,46,7,58,178,198,193,112,41,7,117,102,14,90,181,141,89,212,123,19,88,75,173,103,226,70,179,74,9,171,252,49,205,154,188,114,236,98,110,71,130,219,211,95,40,163,226,244,237,215,193,150,213,219,130,5,1,194,208,149,83,169,70,211,233,177,90,227,192,243,25,250,113,103,71,91,191,132,216,65,199,117,42,198,204,5,65,52,224,175,115,111,87,154,141,134,242,196,66,189,240,80,26,186,159,40,98,152,135,255,112,74,209,45,20,98,32,197,130,27,21,239,126,225,133,51,209,145,144,19,219,14,247,94,24,120,180,134,144,45,220,180,115,87,171,137,155,198,50,20,127,58,194,182,205,18,160,210,93,194,253,143,209,184,64,228,121,10,19,29,232,184,174,240,166,132,106,155,242,199,74,88,217,183,45,101,44,41,245,176,66,134,120,160,40,61,51,22,149,126,128,27,81,133,226,252,164,11,107,245,171,194,165,89,80,42,86,158,184,215,243,136,32,77,222,238,230,79,175,96,96,228,240,55,56,153,56,76,25,194,15,32,160,210,199,48,151,211,255,210,63,58,50,62,244,140,142,129,96,99,153,216,145,7,214,208,249,187,236,128,5,221,156,55,252,48,234,244,63,211,192,185,155,133,76,202,100,108,76,192,81,62,108,171,39,221,161,13,125,18,5,51,90,36,103,156,34,72,114,122,160,98,15,33,7,148,114,100,142,52,4,25,23,209,10,230,9,125,78,34,145,67,20,101,217,127,35,211,203,232,217,120,179,60,12,204,100,60,153,150,189,104,128,16,70,182,160,69,173,86,42,42,162,14,88,225,165,10,5,143,149,42,100,161,80,214,42,120,30,157,109,124,139,218,202,143,144,228,213,149,226,119,147,235,116,253,179,4,183,181,189,103,114,10,45,227,91,209,122,255,33,194,185,220,113,157,6,250,15,173,160,165,162,171,59,224,63,68,91,75,168,87,52,176,127,136,176,26,93,118,179,157,229,194,78,115,161,241,106,185,39,47,100,151,217,112,106,156,69,179,10,109,84,88,223,98,241,95,247,185,72,194,13,64,0,0 };
diff --git a/src/dataStyleCSS.h b/src/dataStyleCSS.h
index 789d0a2..c53ea6b 100644
--- a/src/dataStyleCSS.h
+++ b/src/dataStyleCSS.h
@@ -1,5 +1,5 @@
 const char CSS_STYLE[] PROGMEM = R"=====(
-.container{position:relative;width:79%;margin:20px;box-sizing:border-box}.column,.columns{width:100%;float:left}.card{min-height:100px;border-radius:6px;box-shadow:0 4px 4px rgba(204,197,185,0.5);padding-left:20px;padding-right:20px;margin-bottom:40px;min-width:500px;color:#fff}@media(min-width:1205px){.wide.card{min-width:1075px}}@media(min-width:1790px){.wide.card{min-width:1650px}}@media(max-width:630px){.card{min-width:98%}}.sectionbreak.columns{color:black}.sectionbreak.columns hr{border:0;height:2px;background-color:#666}.turquoise{background:#1abc9c;border-bottom:#16a085 3px solid}.emerald{background:#2ecc71;border-bottom:#27ae60 3px solid}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.dark{background:#444857;border-bottom:#444857 3px solid}.label{box-sizing:border-box;white-space:nowrap;border-radius:.2em;padding:.12em .4em .14em;text-align:center;color:#fff;font-weight:700;line-height:1.3;margin-bottom:5px;display:inline-block;white-space:nowrap;vertical-align:baseline;position:relative;top:-.15em;background-color:#999;margin-bottom:10px}.label-wrap{width:90%;white-space:pre-wrap;word-wrap:break-word}.label.color-blue{background-color:#6f9ad1}.label.color-red{background-color:#d37c7c}.label.color-green{background-color:#9bc268}.label.color-orange{background-color:#dea154}.label.color-yellow{background-color:#e9d641}.label.color-purple{background-color:#9f83d1}@media(min-width:400px){.container{width:84%}}@media(min-width:630px){.container{width:98%}.column,.columns{margin-right:35px}.column:first-child,.columns:first-child{margin-left:0}.one.column,.one.columns{width:4.66666666667%}.two.columns{width:13.3333333333%}.three.columns{width:22%}.four.columns{width:30.6666666667%}.five.columns{width:39.3333333333%}.six.columns{width:48%}.seven.columns{width:56.6666666667%}.eight.columns{width:65.3333333333%}.nine.columns{width:74%}.ten.columns{width:82.6666666667%}.eleven.columns{width:91.3333333333%}.twelve.columns{width:100%;margin-left:0}.one-third.column{width:30.6666666667%}.two-thirds.column{width:65.3333333333%}.one-half.column{width:48%}.offset-by-one.column,.offset-by-one.columns{margin-left:8.66666666667%}.offset-by-two.column,.offset-by-two.columns{margin-left:17.3333333333%}.offset-by-three.column,.offset-by-three.columns{margin-left:26%}.offset-by-four.column,.offset-by-four.columns{margin-left:34.6666666667%}.offset-by-five.column,.offset-by-five.columns{margin-left:43.3333333333%}.offset-by-six.column,.offset-by-six.columns{margin-left:52%}.offset-by-seven.column,.offset-by-seven.columns{margin-left:60.6666666667%}.offset-by-eight.column,.offset-by-eight.columns{margin-left:69.3333333333%}.offset-by-nine.column,.offset-by-nine.columns{margin-left:78%}.offset-by-ten.column,.offset-by-ten.columns{margin-left:86.6666666667%}.offset-by-eleven.column,.offset-by-eleven.columns{margin-left:95.3333333333%}.offset-by-one-third.column,.offset-by-one-third.columns{margin-left:34.6666666667%}.offset-by-two-thirds.column,.offset-by-two-thirds.columns{margin-left:69.3333333333%}.offset-by-one-half.column,.offset-by-one-half.columns{margin-left:52%}}html{font-size:62.5%}body{margin:0;font-size:1.5em;line-height:1;font-weight:400;font-family:"Open Sans",sans-serif;color:#222;background-color:#ecf0f1}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:300}h1{font-size:4rem;line-height:1.2;letter-spacing:-.1rem}h2{font-size:3.6rem;line-height:1.25;letter-spacing:-.1rem}h3{font-size:3rem;line-height:1.3;letter-spacing:-.1rem}h4{font-size:2.4rem;line-height:1.35;letter-spacing:-.08rem}h5{font-size:1.8rem;line-height:1.5;letter-spacing:-.05rem}h6{font-size:1.5rem;line-height:1.6;letter-spacing:0}@media(min-width:630px){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2rem}h6{font-size:1.5rem}}p{margin-top:0}a{color:#1eaedb}a:hover{color:#0fa0ce}button{display:inline-block;padding:10px;border-radius:3px;color:#fff;background-color:#999}button:active{background-color:#666;transform:translateX(4px) translateY(4px)}#mainHeader{display:inline-block}#conStatus{position:inherit;font-size:.75em}button,.button{margin-bottom:1rem;margin-left:.3rem;margin-right:.3rem}.u-full-width{width:100%;box-sizing:border-box}.u-max-full-width{max-width:100%;box-sizing:border-box}.u-pull-right{float:right}.u-pull-left{float:left}.tcenter{text-align:center}hr{margin-top:.5rem;margin-bottom:1.2rem;border-width:0;border-top:1px solid #e1e1e1}.container:after,.row:after,.u-cf{content:"";display:table;clear:both}.control{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.1),hsla(0,0%,100%,0.1));border-radius:50%;box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.75),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.75);height:9em;margin:3em auto;position:relative;width:9em}.control ul{height:100%;padding:0;transform:rotate(45deg)}.control li{border-radius:100% 0 0 0;box-shadow:inset -1px -1px 1px hsla(0,0%,100%,0.5),0 0 1px hsla(0,0%,0%,0.75);display:inline-block;height:50%;overflow:hidden;width:50%}.control ul li:nth-child(2){transform:rotate(90deg)}.control ul li:nth-child(3){transform:rotate(-90deg)}.control ul li:nth-child(4){transform:rotate(180deg)}.control ul a{height:200%;position:relative;transform:rotate(-45deg);width:200%}.control a:hover,.control a:focus{background-color:hsla(0,0%,100%,0.25)}.control a{border-radius:50%;color:#333;display:block;font:bold 1em/3 sans-serif;text-align:center;text-decoration:none;text-shadow:0 1px 1px hsla(0,0%,100%,0.4);transition:.15s}.control .confirm{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.15),hsla(0,0%,100%,0.25));box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.25),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.85);left:50%;line-height:3;margin:-1.5em;position:absolute;top:50%;width:3em}.control .confirm:hover,.control .confirm:focus{background-color:#eee}.switch{display:inline-block !important;background-color:#bebebe;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);color:#fff;cursor:pointer;display:block;font-size:14px;height:26px;margin-left:.3rem;margin-right:.3rem;position:relative;width:60px;-webkit-transition:background-color .2s ease-in-out;-moz-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;-ms-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.switch.checked{background-color:#76d21d}.switch input[type="checkbox"]{display:none;cursor:pointer;height:10px;left:12px;position:absolute;top:8px;width:10px}.in{position:absolute;top:8px;left:12px;-webkit-transition:left .08s ease-in-out;-moz-transition:left .08s ease-in-out;-o-transition:left .08s ease-in-out;-ms-transition:left .08s ease-in-out;transition:left .08s ease-in-out}.switch.checked div{left:38px}.switch .in:before{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f0f0f0));background:-webkit-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-o-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-ms-linear-gradient(top,#fff 0,#f0f0f0 100%);background:linear-gradient(to bottom,#fff 0,#f0f0f0 100%);border:1px solid #fff;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,0.3);content:"";height:18px;position:absolute;top:-5px;left:-9px;width:26px}.switch .in:after{background:#f0f0f0;background:-moz-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-o-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-ms-linear-gradient(top,#f0f0f0 0,#fff 100%);background:linear-gradient(to bottom,#f0f0f0 0,#fff 100%);border-radius:10px;content:"";height:12px;margin:-1px 0 0 -1px;position:absolute;width:12px}.rkmd-slider{display:block;position:relative;font-size:16px;font-family:"Roboto",sans-serif}.rkmd-slider input[type="range"]{overflow:hidden;position:absolute;width:1px;height:1px;opacity:0}.rkmd-slider input[type="range"]+.slider{display:block;position:relative;width:100%;height:27px;border-radius:13px;background-color:#bebebe}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider{height:4px;border-radius:0}}.rkmd-slider input[type="range"]+.slider .slider-fill{display:block;position:absolute;width:0;height:100%;user-select:none;z-index:1}.rkmd-slider input[type="range"]+.slider .slider-handle{cursor:pointer;position:absolute;top:12px;left:0;width:15px;height:15px;margin-left:-8px;border-radius:50%;transition:all .2s ease;user-select:none;z-index:2}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider .slider-handle{top:-5.5px}}.rkmd-slider input[type="range"]:disabled+.slider{background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle{cursor:default !important;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle .slider-label{display:none;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active{top:-5.5px;width:15px;height:15px;margin-left:-8px}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active .slider-label{display:none;border-radius:50%;transform:none}.rkmd-slider input[type="range"]:disabled+.slider .slider-handle:active{box-shadow:none !important;transform:scale(1) !important}.rkmd-slider.slider-discrete .slider .slider-handle{position:relative;z-index:1}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{position:absolute;top:-17.5px;left:4px;width:30px;height:30px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;border-radius:50%;-webkit-transform:scale(1) rotate(-45deg);transform:scale(1) rotate(-45deg);-webkit-transition:all .2s ease;transition:all .2s ease}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{left:-2px;-webkit-transform:scale(0.5) rotate(-45deg);transform:scale(0.5) rotate(-45deg)}}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{position:absolute;top:7px;left:0;width:100%;color:#fff;font-size:16px;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{font-size:12px}}.rkmd-slider.slider-discrete .slider .slider-handle.is-active{top:0;margin-left:-2px;width:4px;height:4px}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label{top:-15px;left:-2px;border-radius:15px 15px 15px 0;-webkit-transform:rotate(-45deg) translate(23px,-25px);transform:rotate(-45deg) translate(23px,-25px)}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label span{opacity:1}.rkmd-slider.slider-discrete.slider-turquoise .slider-label{background-color:#16a085}.rkmd-slider.slider-discrete.slider-emerald .slider-label{background-color:#27ae60}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.rkmd-slider.slider-discrete.slider-peterriver .slider-label{background-color:#2980b9}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.rkmd-slider.slider-discrete.slider-wetasphalt .slider-label{background-color:#2c3e50}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.rkmd-slider.slider-discrete.slider-sunflower .slider-label{background-color:#e6bb0f}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.rkmd-slider.slider-discrete.slider-carrot .slider-label{background-color:#d35400}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.rkmd-slider.slider-discrete.slider-alizarin .slider-label{background-color:#c0392b}input{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}select{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}input[id^="num"]{max-width:6em;width:auto;text-align:right;font-weight:bold;font-size:115%}body div>ul.navigation{margin:0;margin-bottom:30px;padding:0;border-bottom:3px solid #666;overflow:hidden}ul.navigation li{list-style:none;float:left;margin-right:4px}ul.navigation li.controls{float:right}ul.navigation li a{font-weight:bold;display:inline-block;padding:6px 12px;color:#888;outline:0;text-decoration:none;background:#f3f3f3;background:-webkit-gradient(linear,0 0,0 bottom,from(#eee),to(#e4e4e4));background:-moz-linear-gradient(#eee,#e4e4e4);background:linear-gradient(#eee,#e4e4e4);-pie-background:linear-gradient(#eee,#e4e4e4)}ul.navigation li.active a{pointer-events:none;color:white;background:#666;background:-webkit-gradient(linear,0 0,0 bottom,from(#888),to(#666));background:-moz-linear-gradient(#888,#666);background:linear-gradient(#888,#666);-pie-background:linear-gradient(#888,#666)}div.tabscontent>div{padding:0 15px}#tabsnav:empty{display:none}.range-slider{margin:0}.range-slider{width:100%}.range-slider__range{-webkit-appearance:none;width:calc(100% - (45px));height:10px;border-radius:5px;outline:0;padding:0;margin:0}.range-slider__value{display:inline-block;position:relative;width:30px;color:#fff;line-height:20px;text-align:center;border-radius:3px;padding:5px 5px;margin-left:2px}.range-slider__value:after{position:absolute;top:8px;left:-7px;width:0;height:0;content:""}::-moz-range-track{border:0}input::-moz-focus-inner,input::-moz-focus-outer{border:0}svg{display:block;width:100%;height:100%}.y-axis path,.x-axis path{stroke:gray;stroke-width:1;fill:none}.series{stroke:steelblue;stroke-width:3;fill:none}.data-points circle{stroke:steelblue;stroke-width:2;fill:white}.data-points text{display:none}.data-points circle:hover{fill:steelblue;stroke-width:6}.data-points circle:hover+text{display:inline-block}text{text-anchor:end}.vert-switcher{transform:rotate(270deg);margin-top:15px;margin-bottom:25px}.vert-slider{width:150px;transform:rotate(270deg);display:inline-block;margin:50px -42px 70px -42px}.vert-slider span{transform:rotate(90deg)}
+.container{position:relative;width:79%;margin:20px;box-sizing:border-box}.column,.columns{width:100%;float:left}.card{min-height:100px;border-radius:6px;box-shadow:0 4px 4px rgba(204,197,185,0.5);padding-left:20px;padding-right:20px;margin-bottom:40px;min-width:500px;color:#fff}@media(min-width:1205px){.wide.card{min-width:1075px}}@media(min-width:1790px){.wide.card{min-width:1650px}}@media(max-width:630px){.card{min-width:98%}}.sectionbreak.columns{color:black}.sectionbreak.columns hr{border:0;height:2px;background-color:#666}.turquoise{background:#1abc9c;border-bottom:#16a085 3px solid}.emerald{background:#2ecc71;border-bottom:#27ae60 3px solid}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.dark{background:#444857;border-bottom:#444857 3px solid}.label{box-sizing:border-box;white-space:nowrap;border-radius:.2em;padding:.12em .4em .14em;text-align:center;color:#fff;font-weight:700;line-height:1.3;margin-bottom:5px;display:inline-block;white-space:nowrap;vertical-align:baseline;position:relative;top:-.15em;background-color:#999;margin-bottom:10px}.label-wrap{width:90%;white-space:pre-wrap;word-wrap:break-word}.label.color-blue{background-color:#6f9ad1}.label.color-red{background-color:#d37c7c}.label.color-green{background-color:#9bc268}.label.color-orange{background-color:#dea154}.label.color-yellow{background-color:#e9d641}.label.color-purple{background-color:#9f83d1}@media(min-width:400px){.container{width:84%}}@media(min-width:630px){.container{width:98%}.column,.columns{margin-right:35px}.column:first-child,.columns:first-child{margin-left:0}.one.column,.one.columns{width:4.66666666667%}.two.columns{width:13.3333333333%}.three.columns{width:22%}.four.columns{width:30.6666666667%}.five.columns{width:39.3333333333%}.six.columns{width:48%}.seven.columns{width:56.6666666667%}.eight.columns{width:65.3333333333%}.nine.columns{width:74%}.ten.columns{width:82.6666666667%}.eleven.columns{width:91.3333333333%}.twelve.columns{width:100%;margin-left:0}.one-third.column{width:30.6666666667%}.two-thirds.column{width:65.3333333333%}.one-half.column{width:48%}.offset-by-one.column,.offset-by-one.columns{margin-left:8.66666666667%}.offset-by-two.column,.offset-by-two.columns{margin-left:17.3333333333%}.offset-by-three.column,.offset-by-three.columns{margin-left:26%}.offset-by-four.column,.offset-by-four.columns{margin-left:34.6666666667%}.offset-by-five.column,.offset-by-five.columns{margin-left:43.3333333333%}.offset-by-six.column,.offset-by-six.columns{margin-left:52%}.offset-by-seven.column,.offset-by-seven.columns{margin-left:60.6666666667%}.offset-by-eight.column,.offset-by-eight.columns{margin-left:69.3333333333%}.offset-by-nine.column,.offset-by-nine.columns{margin-left:78%}.offset-by-ten.column,.offset-by-ten.columns{margin-left:86.6666666667%}.offset-by-eleven.column,.offset-by-eleven.columns{margin-left:95.3333333333%}.offset-by-one-third.column,.offset-by-one-third.columns{margin-left:34.6666666667%}.offset-by-two-thirds.column,.offset-by-two-thirds.columns{margin-left:69.3333333333%}.offset-by-one-half.column,.offset-by-one-half.columns{margin-left:52%}}html{font-size:62.5%}body{margin:0;font-size:1.5em;line-height:1;font-weight:400;font-family:"Open Sans",sans-serif;color:#222;background-color:#ecf0f1}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:300}h1{font-size:4rem;line-height:1.2;letter-spacing:-.1rem}h2{font-size:3.6rem;line-height:1.25;letter-spacing:-.1rem}h3{font-size:3rem;line-height:1.3;letter-spacing:-.1rem}h4{font-size:2.4rem;line-height:1.35;letter-spacing:-.08rem}h5{font-size:1.8rem;line-height:1.5;letter-spacing:-.05rem}h6{font-size:1.5rem;line-height:1.6;letter-spacing:0}@media(min-width:630px){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2rem}h6{font-size:1.5rem}}p{margin-top:0}a{color:#1eaedb}a:hover{color:#0fa0ce}button{display:inline-block;padding:10px;border-radius:3px;color:#fff;background-color:#999}button:enabled:active{background-color:#666;transform:translateX(4px) translateY(4px)}#mainHeader{display:inline-block}#conStatus{position:inherit;font-size:.75em}button,.button{margin-bottom:1rem;margin-left:.3rem;margin-right:.3rem}.u-full-width{width:100%;box-sizing:border-box}.u-max-full-width{max-width:100%;box-sizing:border-box}.u-pull-right{float:right}.u-pull-left{float:left}.tcenter{text-align:center}hr{margin-top:.5rem;margin-bottom:1.2rem;border-width:0;border-top:1px solid #e1e1e1}.container:after,.row:after,.u-cf{content:"";display:table;clear:both}.control{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.1),hsla(0,0%,100%,0.1));border-radius:50%;box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.75),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.75);height:9em;margin:3em auto;position:relative;width:9em}.control ul{height:100%;padding:0;transform:rotate(45deg)}.control li{border-radius:100% 0 0 0;box-shadow:inset -1px -1px 1px hsla(0,0%,100%,0.5),0 0 1px hsla(0,0%,0%,0.75);display:inline-block;height:50%;overflow:hidden;width:50%}.control ul li:nth-child(2){transform:rotate(90deg)}.control ul li:nth-child(3){transform:rotate(-90deg)}.control ul li:nth-child(4){transform:rotate(180deg)}.control ul a{height:200%;position:relative;transform:rotate(-45deg);width:200%}.control a:hover,.control a:focus{background-color:hsla(0,0%,100%,0.25)}.control a{border-radius:50%;color:#333;display:block;font:bold 1em/3 sans-serif;text-align:center;text-decoration:none;text-shadow:0 1px 1px hsla(0,0%,100%,0.4);transition:.15s}.control .confirm{background-color:#ddd;background-image:linear-gradient(hsla(0,0%,0%,0.15),hsla(0,0%,100%,0.25));box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,0.5),0 0 1px 1px hsla(0,0%,100%,0.25),0 0 1px 2px hsla(0,0%,100%,0.25),0 0 1px 3px hsla(0,0%,100%,0.25),0 0 1px 4px hsla(0,0%,100%,0.25),0 0 1px 6px hsla(0,0%,0%,0.85);left:50%;line-height:3;margin:-1.5em;position:absolute;top:50%;width:3em}.control .confirm:hover,.control .confirm:focus{background-color:#eee}.control:not(.disabled) a.confirm:active{background-color:#777}.control:not(.disabled) li:active{background-color:#777}.switch{display:inline-block !important;background-color:#bebebe;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);color:#fff;cursor:pointer;display:block;font-size:14px;height:26px;margin-left:.3rem;margin-right:.3rem;position:relative;width:60px;-webkit-transition:background-color .2s ease-in-out;-moz-transition:background-color .2s ease-in-out;-o-transition:background-color .2s ease-in-out;-ms-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}.switch.checked{background-color:#76d21d}.switch input[type="checkbox"]{display:none;cursor:pointer;height:10px;left:12px;position:absolute;top:8px;width:10px}.in{position:absolute;top:8px;left:12px;-webkit-transition:left .08s ease-in-out;-moz-transition:left .08s ease-in-out;-o-transition:left .08s ease-in-out;-ms-transition:left .08s ease-in-out;transition:left .08s ease-in-out}.switch.checked div{left:38px}.switch .in:before{background:#fff;background:-moz-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#f0f0f0));background:-webkit-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-o-linear-gradient(top,#fff 0,#f0f0f0 100%);background:-ms-linear-gradient(top,#fff 0,#f0f0f0 100%);background:linear-gradient(to bottom,#fff 0,#f0f0f0 100%);border:1px solid #fff;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,0.3);content:"";height:18px;position:absolute;top:-5px;left:-9px;width:26px}.switch .in:after{background:#f0f0f0;background:-moz-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-o-linear-gradient(top,#f0f0f0 0,#fff 100%);background:-ms-linear-gradient(top,#f0f0f0 0,#fff 100%);background:linear-gradient(to bottom,#f0f0f0 0,#fff 100%);border-radius:10px;content:"";height:12px;margin:-1px 0 0 -1px;position:absolute;width:12px}.rkmd-slider{display:block;position:relative;font-size:16px;font-family:"Roboto",sans-serif}.rkmd-slider input[type="range"]{overflow:hidden;position:absolute;width:1px;height:1px;opacity:0}.rkmd-slider input[type="range"]+.slider{display:block;position:relative;width:100%;height:27px;border-radius:13px;background-color:#bebebe}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider{height:4px;border-radius:0}}.rkmd-slider input[type="range"]+.slider .slider-fill{display:block;position:absolute;width:0;height:100%;user-select:none;z-index:1}.rkmd-slider input[type="range"]+.slider .slider-handle{cursor:pointer;position:absolute;top:12px;left:0;width:15px;height:15px;margin-left:-8px;border-radius:50%;transition:all .2s ease;user-select:none;z-index:2}@media(pointer:fine){.rkmd-slider input[type="range"]+.slider .slider-handle{top:-5.5px}}.rkmd-slider input[type="range"]:disabled+.slider{background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle{cursor:default !important;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle .slider-label{display:none;background-color:#b0b0b0 !important}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active{top:-5.5px;width:15px;height:15px;margin-left:-8px}.rkmd-slider input[type="range"]:disabled+.slider .slider-fill.is-active .slider-label,.rkmd-slider input[type="range"]:disabled+.slider .slider-handle.is-active .slider-label{display:none;border-radius:50%;transform:none}.rkmd-slider input[type="range"]:disabled+.slider .slider-handle:active{box-shadow:none !important;transform:scale(1) !important}.rkmd-slider.slider-discrete .slider .slider-handle{position:relative;z-index:1}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{position:absolute;top:-17.5px;left:4px;width:30px;height:30px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;border-radius:50%;-webkit-transform:scale(1) rotate(-45deg);transform:scale(1) rotate(-45deg);-webkit-transition:all .2s ease;transition:all .2s ease}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label{left:-2px;-webkit-transform:scale(0.5) rotate(-45deg);transform:scale(0.5) rotate(-45deg)}}.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{position:absolute;top:7px;left:0;width:100%;color:#fff;font-size:16px;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media(pointer:fine){.rkmd-slider.slider-discrete .slider .slider-handle .slider-label span{font-size:12px}}.rkmd-slider.slider-discrete .slider .slider-handle.is-active{top:0;margin-left:-2px;width:4px;height:4px}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label{top:-15px;left:-2px;border-radius:15px 15px 15px 0;-webkit-transform:rotate(-45deg) translate(23px,-25px);transform:rotate(-45deg) translate(23px,-25px)}.rkmd-slider.slider-discrete .slider .slider-handle.is-active .slider-label span{opacity:1}.rkmd-slider.slider-discrete.slider-turquoise .slider-label{background-color:#16a085}.rkmd-slider.slider-discrete.slider-emerald .slider-label{background-color:#27ae60}.peterriver{background:#3498db;border-bottom:#2980b9 3px solid}.rkmd-slider.slider-discrete.slider-peterriver .slider-label{background-color:#2980b9}.wetasphalt{background:#34495e;border-bottom:#2c3e50 3px solid}.rkmd-slider.slider-discrete.slider-wetasphalt .slider-label{background-color:#2c3e50}.sunflower{background:#f1c40f;border-bottom:#e6bb0f 3px solid}.rkmd-slider.slider-discrete.slider-sunflower .slider-label{background-color:#e6bb0f}.carrot{background:#e67e22;border-bottom:#d35400 3px solid}.rkmd-slider.slider-discrete.slider-carrot .slider-label{background-color:#d35400}.alizarin{background:#e74c3c;border-bottom:#c0392b 3px solid}.rkmd-slider.slider-discrete.slider-alizarin .slider-label{background-color:#c0392b}input{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}select{margin:0 auto 1.2rem auto;padding:2px 5px;width:100%;box-sizing:border-box;border:0;border-radius:4px;box-shadow:inset 0 0 6px rgba(0,0,0,0.3);background:rgba(255,255,255,0.8)}input[id^="num"]{max-width:6em;width:auto;text-align:right;font-weight:bold;font-size:115%}body div>ul.navigation{margin:0;margin-bottom:30px;padding:0;border-bottom:3px solid #666;overflow:hidden}ul.navigation li{list-style:none;float:left;margin-right:4px}ul.navigation li.controls{float:right}ul.navigation li a{font-weight:bold;display:inline-block;padding:6px 12px;color:#888;outline:0;text-decoration:none;background:#f3f3f3;background:-webkit-gradient(linear,0 0,0 bottom,from(#eee),to(#e4e4e4));background:-moz-linear-gradient(#eee,#e4e4e4);background:linear-gradient(#eee,#e4e4e4);-pie-background:linear-gradient(#eee,#e4e4e4)}ul.navigation li.active a{pointer-events:none;color:white;background:#666;background:-webkit-gradient(linear,0 0,0 bottom,from(#888),to(#666));background:-moz-linear-gradient(#888,#666);background:linear-gradient(#888,#666);-pie-background:linear-gradient(#888,#666)}div.tabscontent>div{padding:0 15px}#tabsnav:empty{display:none}.range-slider{margin:0}.range-slider{width:100%}.range-slider__range{-webkit-appearance:none;width:calc(100% - (45px));height:10px;border-radius:5px;outline:0;padding:0;margin:0}.range-slider__value{display:inline-block;position:relative;width:30px;color:#fff;line-height:20px;text-align:center;border-radius:3px;padding:5px 5px;margin-left:2px}.range-slider__value:after{position:absolute;top:8px;left:-7px;width:0;height:0;content:""}::-moz-range-track{border:0}input::-moz-focus-inner,input::-moz-focus-outer{border:0}svg{display:block;width:100%;height:100%}.y-axis path,.x-axis path{stroke:gray;stroke-width:1;fill:none}.series{stroke:steelblue;stroke-width:3;fill:none}.data-points circle{stroke:steelblue;stroke-width:2;fill:white}.data-points text{display:none}.data-points circle:hover{fill:steelblue;stroke-width:6}.data-points circle:hover+text{display:inline-block}text{text-anchor:end}.vert-switcher{transform:rotate(270deg);margin-top:15px;margin-bottom:25px}.vert-slider{width:150px;transform:rotate(270deg);display:inline-block;margin:50px -42px 70px -42px}.vert-slider span{transform:rotate(90deg)}button:disabled{color:#333;background-color:#999}select:disabled{color:#333;background-color:#999}input:disabled{color:#333;background-color:#999}.range-slider__range:disabled{background-color:#999}.range-slider__range:disabled::-webkit-slider-thumb{background-color:#aaa}.range-slider__range:disabled::-moz-range-thumb{background-color:#aaa}.switch.disabled .in::before{background:#bbb;border:1px solid #ddd}.switch.disabled .in::after{background:#bbb}.switch.checked.disabled{background:#b1d092}
 )=====";
 
-const uint8_t CSS_STYLE_GZIP[3484] PROGMEM = { 31,139,8,0,36,32,244,97,2,255,213,27,219,110,235,184,241,87,212,4,1,98,172,164,234,110,91,194,46,250,216,183,2,221,151,22,197,246,128,150,168,72,136,44,185,146,124,146,172,161,127,239,144,212,133,55,197,78,114,22,69,143,79,18,155,154,25,206,157,195,33,109,167,77,221,163,178,198,237,229,212,116,101,95,54,117,220,226,10,245,229,119,156,188,148,89,95,196,219,253,67,114,68,237,83,89,199,158,115,122,77,14,205,171,213,149,191,151,245,83,124,104,218,12,183,22,140,12,118,218,84,231,99,109,142,127,187,11,67,118,29,231,33,201,171,6,245,113,133,243,30,192,80,155,93,142,101,109,21,184,124,42,122,2,64,105,82,66,45,202,202,115,23,71,211,44,5,202,154,151,216,49,130,211,43,253,105,159,14,232,209,115,2,211,221,111,77,119,23,154,142,29,110,146,19,202,50,224,198,34,19,48,22,167,145,150,78,65,135,152,4,192,106,223,55,199,56,160,67,240,153,113,25,82,38,128,243,166,141,239,243,60,31,254,114,196,89,137,30,23,8,215,115,194,211,235,230,98,195,71,188,8,49,9,185,133,135,131,6,107,187,119,214,177,162,208,225,177,208,235,248,32,242,25,146,4,191,223,61,12,131,221,225,148,24,233,208,98,244,60,235,154,113,126,168,80,250,172,135,48,138,246,194,116,28,59,201,168,121,143,104,25,48,158,218,230,92,103,214,40,125,20,69,131,221,159,219,255,156,155,178,195,151,5,32,190,119,209,33,221,167,201,108,116,170,201,123,55,66,206,46,52,124,48,79,215,84,101,54,216,248,136,91,84,101,2,174,135,211,116,235,202,184,222,22,225,200,225,113,79,184,199,109,11,206,215,10,232,126,176,223,101,7,5,125,191,115,14,123,30,253,5,247,168,59,21,168,234,37,244,96,31,98,5,61,245,113,40,204,222,157,107,240,213,23,105,242,220,77,3,39,151,177,113,116,56,56,57,143,13,246,106,27,113,98,28,109,177,231,201,168,153,31,6,142,48,49,170,202,223,81,91,214,34,242,54,72,125,69,223,169,227,239,189,3,143,156,161,246,89,64,12,130,96,23,110,101,68,54,202,35,86,232,128,171,139,54,158,147,151,162,236,177,213,157,80,138,227,186,121,105,209,73,10,82,219,195,199,41,208,98,219,133,79,134,29,144,95,46,252,78,122,252,218,91,32,213,83,29,167,184,6,155,114,209,149,228,144,115,172,23,230,133,91,199,73,42,200,63,115,62,176,125,41,86,33,180,146,172,236,78,21,122,139,203,154,194,30,170,38,125,214,177,8,126,211,151,41,170,198,169,15,168,195,4,33,81,115,91,223,156,98,203,118,67,224,85,13,130,253,126,47,49,225,146,80,101,10,179,200,76,99,122,219,67,118,227,217,56,181,152,62,78,94,64,87,244,93,76,227,208,34,159,71,124,155,78,2,50,156,249,240,154,227,47,223,163,204,21,65,91,156,105,32,51,127,155,110,83,17,242,169,197,184,214,192,238,15,169,23,237,68,216,166,69,245,147,142,133,12,35,55,12,68,224,55,92,65,96,104,128,241,62,139,2,137,223,211,185,61,85,58,202,251,124,231,131,112,74,158,12,156,49,227,205,139,17,27,223,5,15,154,172,58,231,71,9,154,36,72,101,25,26,205,200,86,2,159,164,233,241,81,156,151,109,215,91,105,81,86,217,12,206,15,78,168,116,89,113,6,187,169,241,76,125,121,63,45,116,129,29,205,255,182,192,71,255,210,200,75,161,111,251,243,63,2,81,128,177,36,24,207,131,7,121,115,110,165,113,223,177,5,234,57,184,176,12,178,23,201,119,229,171,204,34,209,79,135,191,227,90,122,16,70,34,117,26,137,18,76,20,138,228,235,82,81,193,54,32,82,41,212,119,158,68,189,210,176,176,119,37,229,188,224,74,17,145,22,19,170,85,172,190,40,219,108,132,93,81,24,152,131,129,117,34,156,44,22,33,7,203,71,46,66,81,205,53,121,222,225,222,58,188,89,130,39,104,70,59,193,117,118,146,103,44,24,139,143,152,218,81,145,142,187,149,88,93,48,56,79,50,87,198,69,90,94,36,16,224,60,206,212,15,139,232,126,96,175,136,196,57,166,169,31,22,41,5,254,154,80,139,255,154,218,81,145,78,232,137,200,156,139,153,43,227,34,129,200,89,19,137,143,6,115,101,92,162,181,95,19,138,139,26,83,63,44,82,218,138,142,215,107,133,234,87,68,218,69,171,34,85,43,250,145,98,147,167,182,15,215,132,146,67,208,124,231,217,173,126,164,196,171,249,222,195,91,213,47,69,183,185,254,72,245,174,161,232,143,213,133,150,46,80,45,225,56,242,236,240,97,56,52,217,219,8,10,149,245,242,212,181,73,101,33,20,54,66,217,3,43,30,251,156,163,99,89,189,197,119,127,59,225,218,248,21,213,221,157,217,193,111,240,212,182,204,167,162,201,35,53,164,186,244,166,185,147,187,67,225,154,133,103,22,190,89,4,102,17,154,69,52,177,78,74,28,71,170,99,236,176,5,190,120,78,124,199,1,18,156,96,65,43,115,110,123,73,133,123,40,226,104,149,67,234,61,168,156,0,106,40,60,14,207,183,35,13,102,184,134,234,243,168,42,162,191,134,23,112,120,158,173,97,214,215,76,233,236,40,110,120,225,45,180,83,113,117,168,33,69,141,4,212,80,69,141,100,84,103,181,114,17,212,29,42,138,12,108,79,213,16,85,174,40,189,175,200,228,173,176,58,12,39,193,41,6,52,110,25,239,93,140,112,118,24,80,92,52,100,207,53,142,58,57,114,82,60,28,206,224,51,245,69,91,124,79,149,191,171,110,223,125,97,47,173,47,175,71,218,49,74,73,53,126,209,238,67,147,30,42,212,46,111,218,99,76,223,65,229,142,255,241,24,128,6,141,249,243,63,233,231,225,254,8,133,224,95,49,2,46,180,236,14,247,80,44,254,218,163,254,220,45,125,142,178,46,32,200,122,46,106,237,45,68,237,200,154,105,143,226,75,27,1,98,121,62,55,216,62,55,194,202,76,58,52,216,103,43,63,87,21,51,61,95,193,172,52,80,206,22,105,1,112,40,75,71,224,125,180,19,65,161,51,95,88,167,133,190,159,159,16,46,47,124,11,166,103,59,178,139,178,71,27,138,150,119,19,230,229,146,248,212,55,39,131,51,238,156,233,35,65,114,167,237,165,113,143,93,242,26,150,58,61,70,57,204,98,218,109,243,50,189,61,91,105,126,33,0,192,64,124,119,55,111,244,122,116,168,112,146,86,24,181,32,109,95,48,42,109,83,233,246,43,89,198,59,89,121,68,79,56,38,182,71,100,67,4,62,9,180,31,11,112,151,71,199,116,30,232,127,219,221,152,203,8,81,47,29,219,72,158,28,78,106,103,141,168,178,134,197,194,112,12,34,227,244,163,80,9,55,166,195,193,40,207,183,28,128,167,3,240,56,0,255,26,64,112,13,32,18,0,38,14,166,30,208,126,54,112,236,195,222,29,157,251,38,89,235,3,238,137,79,143,86,48,206,213,101,105,224,61,204,217,192,225,98,182,109,32,222,240,99,16,102,248,105,179,96,86,229,69,84,50,33,96,16,118,29,85,215,22,17,193,186,69,215,26,25,181,121,107,228,154,88,150,100,60,210,238,137,139,50,203,112,157,76,189,192,7,94,76,224,55,174,251,130,109,9,31,189,205,69,17,112,239,136,2,202,56,190,6,199,186,134,20,104,144,220,157,138,132,38,51,120,212,12,106,155,67,153,153,217,99,20,150,96,45,244,198,85,192,228,6,242,38,133,148,169,196,156,206,229,56,58,23,53,140,198,88,133,138,108,182,11,51,8,201,190,16,226,85,102,184,248,248,103,223,224,170,31,181,137,68,71,50,156,54,45,162,114,214,80,182,177,193,185,87,188,234,44,193,134,105,131,105,200,118,195,110,225,152,188,129,173,255,241,71,101,151,80,147,94,64,69,155,31,158,77,188,255,121,54,217,65,164,177,34,25,172,204,151,68,83,31,47,182,88,49,60,59,39,58,192,2,113,238,89,15,142,96,141,91,118,62,191,76,6,145,61,114,30,95,113,204,123,140,241,96,119,47,101,159,22,218,74,192,248,83,121,60,53,109,143,234,94,83,153,28,48,121,73,171,64,32,30,71,76,118,115,168,54,232,145,4,104,131,188,108,127,195,23,62,233,185,237,224,253,169,41,169,239,170,110,63,150,104,132,254,20,197,209,114,84,241,110,117,177,154,165,35,82,143,65,109,127,120,46,123,139,243,119,89,86,195,246,58,3,163,14,91,64,184,57,247,137,117,108,126,255,24,66,243,65,250,221,135,224,63,0,59,25,220,78,11,156,62,107,155,165,219,40,243,220,108,2,52,202,250,116,238,255,213,191,157,240,207,119,20,9,236,123,247,219,236,48,52,173,72,230,155,151,59,208,47,235,199,144,3,20,189,83,239,224,201,84,185,145,142,99,89,95,214,1,23,98,26,179,145,135,6,108,95,222,183,213,10,84,115,11,165,238,58,208,53,0,89,255,70,86,126,191,176,13,254,142,136,63,42,29,212,16,31,48,44,70,226,177,146,184,71,136,169,108,114,126,5,93,153,4,208,112,224,143,67,94,6,201,78,27,1,113,212,222,140,196,136,152,148,101,66,128,190,97,117,172,201,26,213,29,12,63,58,148,242,134,31,162,153,111,156,104,163,157,228,83,12,54,159,67,3,19,125,6,79,197,153,132,215,99,178,227,65,174,126,167,134,17,50,161,39,31,204,58,203,177,172,144,3,231,122,126,138,154,221,106,172,88,225,20,3,214,126,14,27,146,7,5,191,161,219,5,209,109,40,243,55,122,14,19,148,89,250,199,122,14,243,17,141,243,128,75,125,192,115,174,48,216,124,14,109,213,115,222,199,123,207,115,116,152,82,57,79,183,255,138,7,120,243,202,22,211,130,158,56,15,121,163,113,139,233,200,157,248,64,251,124,204,172,14,252,145,219,217,143,29,8,101,5,228,214,84,178,142,10,253,181,191,55,32,66,195,55,215,4,218,194,138,64,15,198,96,57,144,55,8,171,156,46,11,56,121,219,144,6,80,255,70,78,39,174,204,240,147,125,163,100,92,27,96,170,20,182,74,223,197,245,181,39,250,172,166,153,154,81,227,114,22,231,96,227,205,229,102,6,199,89,3,101,82,103,184,89,74,99,252,107,229,101,85,173,137,44,169,214,73,248,109,230,185,35,253,53,92,225,180,103,107,244,239,176,2,101,248,53,118,63,206,68,129,234,172,194,23,105,149,215,231,40,234,188,236,196,105,50,69,200,217,60,148,138,54,107,167,168,137,148,185,220,50,138,170,106,46,98,214,165,242,190,102,52,89,84,150,109,109,122,85,229,26,141,24,204,67,90,48,217,236,1,26,199,114,200,139,43,168,63,78,85,112,9,243,243,232,162,49,51,156,163,115,213,95,41,245,127,48,247,243,7,122,18,254,101,89,68,114,98,101,250,199,11,99,151,157,197,90,179,95,22,100,33,197,57,224,173,81,244,195,196,248,193,214,89,35,44,217,73,159,2,104,59,134,0,12,95,101,99,110,159,47,53,25,161,203,59,254,50,99,151,162,10,63,186,155,53,47,153,72,195,156,105,139,251,89,50,57,200,212,213,73,159,133,111,164,39,41,112,165,72,116,183,246,92,39,6,179,255,144,227,148,201,127,124,101,227,75,164,182,26,216,52,67,201,1,202,167,213,74,178,254,68,181,150,66,109,209,161,212,77,187,14,161,217,219,9,139,192,202,248,245,21,224,115,106,102,17,230,233,84,54,138,64,122,79,215,196,212,192,12,95,247,1,163,59,161,181,13,243,86,89,136,157,165,185,56,223,45,91,106,64,181,133,168,202,43,52,170,215,26,216,75,85,55,83,80,214,109,186,1,209,140,118,234,160,60,240,7,217,153,169,146,211,137,39,47,254,55,146,149,178,184,35,102,106,111,142,72,174,151,21,72,233,251,195,51,73,46,203,242,192,178,91,244,212,2,56,36,109,210,249,151,179,110,235,209,89,151,115,196,71,15,138,103,211,242,200,37,223,228,99,224,63,82,72,102,175,201,213,222,207,167,211,231,249,178,174,164,47,181,74,96,87,117,111,34,58,222,225,189,74,146,221,224,253,242,189,221,27,56,90,102,184,206,20,165,255,229,219,192,55,48,181,204,112,157,41,74,255,171,119,140,111,224,105,158,224,42,75,140,252,151,46,46,223,192,15,163,126,149,25,70,251,139,87,161,111,96,103,162,127,149,33,70,125,160,101,217,124,197,135,30,145,26,236,20,124,60,46,29,143,62,201,233,11,87,217,174,158,216,39,243,61,252,47,156,50,112,186,97,223,137,8,67,115,250,113,236,221,102,96,75,203,255,29,219,172,6,46,179,127,255,124,87,159,143,119,191,113,119,32,34,124,28,153,164,252,115,11,59,61,22,17,238,52,145,227,68,190,18,112,199,155,90,164,49,253,203,185,178,107,244,189,124,162,39,136,203,221,45,241,158,131,207,125,141,100,145,121,122,184,244,72,201,53,21,169,77,52,8,19,144,243,238,170,236,128,147,254,173,194,108,241,95,46,99,136,39,59,100,197,148,145,167,147,175,78,184,219,33,67,25,232,162,200,255,238,181,29,98,29,218,213,24,157,125,183,219,37,205,185,39,144,228,16,95,119,204,42,164,43,159,188,110,233,161,146,94,161,51,181,15,243,182,57,62,146,35,186,141,217,55,240,38,32,47,169,77,170,107,226,18,20,115,2,127,175,83,41,2,90,167,18,228,190,17,90,213,252,184,64,163,203,88,148,89,228,110,100,223,141,167,67,84,111,244,238,191,160,25,226,16,159,83,11,152,128,169,5,72,220,162,19,128,55,41,236,187,10,89,160,174,106,99,6,29,32,76,236,30,234,238,177,141,251,11,57,207,153,131,129,22,87,195,61,121,14,250,138,241,241,212,191,9,251,94,72,195,100,251,58,117,109,167,8,147,134,151,132,35,62,248,246,141,125,47,97,210,28,58,157,128,77,84,167,99,240,48,60,216,126,164,180,211,110,88,6,84,232,80,134,109,132,19,58,105,51,71,186,178,179,119,47,97,173,103,237,219,183,239,136,124,57,67,31,64,43,189,89,95,252,6,153,112,18,78,191,128,166,238,68,212,91,115,19,103,225,152,148,133,43,219,180,156,86,217,28,143,70,174,156,47,90,219,57,199,207,45,85,135,107,211,15,49,243,50,54,1,212,185,233,243,252,133,49,150,149,71,0,122,238,14,251,253,26,183,166,58,14,74,198,203,55,205,134,238,251,147,212,231,85,27,217,204,3,222,44,244,90,118,198,9,245,133,105,191,46,31,46,29,36,191,103,28,131,151,190,37,236,253,116,39,46,33,29,158,209,225,72,67,31,119,19,112,215,99,92,145,239,215,136,24,62,143,145,161,30,89,52,176,59,35,45,219,180,194,87,176,61,134,77,35,94,68,39,150,149,2,64,165,62,94,176,164,52,86,102,136,214,241,126,18,230,16,110,54,210,39,204,185,234,180,0,247,195,53,20,66,228,139,80,22,59,63,35,55,253,228,13,141,183,165,87,137,18,238,182,31,223,127,27,215,57,143,126,93,134,145,18,130,54,164,14,189,70,84,27,55,99,168,17,76,195,10,72,213,177,157,223,10,115,176,45,208,218,45,171,255,2,193,128,231,116,176,58,0,0 };
+const uint8_t CSS_STYLE_GZIP[3597] PROGMEM = { 31,139,8,0,202,202,6,98,2,255,213,27,219,110,235,184,241,87,212,4,1,98,172,164,234,110,91,198,46,250,216,183,2,221,151,22,197,246,128,146,168,72,136,44,185,146,124,146,172,161,127,239,144,212,133,55,197,78,114,22,69,143,79,18,155,154,25,206,157,195,33,109,167,77,221,163,178,198,237,229,212,116,101,95,54,117,220,226,10,245,229,119,124,120,41,179,190,136,183,251,135,195,17,181,79,101,29,123,206,233,245,144,52,175,86,87,254,94,214,79,113,210,180,25,110,45,24,25,236,180,169,206,199,218,28,255,118,23,134,236,58,206,195,33,175,26,212,199,21,206,123,0,67,109,118,57,150,181,85,224,242,169,232,9,0,165,73,9,181,40,43,207,93,28,77,179,20,40,107,94,98,199,8,78,175,244,167,125,74,208,163,231,4,166,187,223,154,238,46,52,29,59,220,28,78,40,203,128,27,139,76,192,88,156,70,90,58,5,29,98,18,0,171,125,223,28,227,128,14,193,103,198,101,72,153,0,206,155,54,190,207,243,124,248,203,17,103,37,122,92,32,92,207,9,79,175,155,139,13,31,241,34,196,36,228,22,30,14,26,172,237,222,89,199,138,66,135,199,66,175,227,131,200,103,72,18,252,126,247,48,12,118,135,83,98,164,164,197,232,121,214,53,227,60,169,80,250,172,135,48,138,246,194,116,28,59,135,81,243,30,209,50,96,60,181,205,185,206,172,81,250,40,138,6,187,63,183,255,57,55,101,135,47,11,64,124,239,162,36,221,167,135,217,232,84,147,247,110,132,156,93,104,248,96,158,174,169,202,108,176,241,17,183,168,202,4,92,15,167,233,214,149,113,189,45,194,145,195,227,158,112,143,219,22,156,175,21,208,253,96,191,203,18,5,125,191,115,146,61,143,254,130,123,212,157,10,84,245,18,122,176,15,177,130,158,250,56,20,102,239,206,53,248,234,139,52,121,238,166,129,147,203,216,56,74,18,39,231,177,193,94,109,35,78,140,163,45,246,60,25,53,243,195,192,17,38,70,85,249,59,106,203,90,68,222,6,169,175,232,59,117,252,189,151,240,200,25,106,159,5,196,32,8,118,225,86,70,100,163,60,98,133,18,92,93,180,241,124,120,41,202,30,91,221,9,165,56,174,155,151,22,157,164,32,181,61,124,156,2,45,182,93,248,100,216,1,249,229,194,239,67,143,95,123,11,164,122,170,227,20,215,96,83,46,186,14,57,228,28,235,133,121,225,214,113,14,21,228,159,57,31,216,190,20,171,16,90,135,172,236,78,21,122,139,203,154,194,38,85,147,62,235,88,4,191,233,203,20,85,227,212,9,234,48,65,56,168,185,173,111,78,177,101,187,33,240,170,6,193,126,191,151,152,112,73,168,50,133,89,100,166,49,189,237,33,187,241,108,156,90,76,31,31,94,64,87,244,93,76,227,208,34,159,71,124,155,78,2,50,156,249,240,154,227,47,223,163,204,21,65,91,156,105,32,51,127,155,110,83,17,242,169,197,184,214,192,238,147,212,139,118,34,108,211,162,250,73,199,66,134,145,27,6,34,240,27,174,32,48,52,192,120,159,69,129,196,239,233,220,158,42,29,229,125,190,243,65,56,37,79,6,206,152,241,230,197,136,141,239,130,7,77,86,157,243,163,4,77,18,164,178,12,141,102,100,43,129,79,210,244,248,40,206,203,182,235,173,180,40,171,108,6,231,7,39,84,186,172,56,131,221,212,120,166,190,188,159,22,186,192,142,230,127,91,224,163,127,105,228,165,208,183,253,249,31,129,40,192,88,18,140,231,193,131,188,57,183,210,184,239,216,2,245,28,92,88,6,217,139,228,187,242,85,102,145,232,167,195,223,113,45,61,8,35,145,58,141,68,9,38,10,69,242,117,169,168,96,27,16,169,20,234,59,79,162,94,105,88,216,187,146,114,94,112,165,136,72,139,9,213,42,86,95,148,109,54,194,174,40,12,204,193,192,58,17,78,22,139,144,131,229,35,23,161,168,230,154,60,239,112,111,37,111,150,224,9,154,209,78,112,157,157,228,25,11,198,226,35,166,118,84,164,227,110,37,86,23,12,206,147,204,149,113,145,150,23,9,4,56,143,51,245,195,34,186,31,216,43,34,113,142,105,234,135,69,74,129,191,38,212,226,191,166,118,84,164,19,122,34,50,231,98,230,202,184,72,32,114,214,68,226,163,193,92,25,151,104,237,215,132,226,162,198,212,15,139,148,182,162,227,245,90,161,250,21,145,118,209,170,72,213,138,126,164,216,228,169,237,195,53,161,228,16,52,223,121,118,171,31,41,241,106,190,247,240,86,245,75,209,109,174,63,82,189,107,40,250,99,117,161,165,11,84,75,56,142,60,59,124,24,146,38,123,27,65,161,178,94,158,186,54,169,44,132,194,70,40,123,96,197,99,159,115,116,44,171,183,248,238,111,39,92,27,191,162,186,187,51,59,248,13,158,218,150,249,84,52,121,164,134,84,151,222,52,119,114,119,40,92,179,240,204,194,55,139,192,44,66,179,136,38,214,73,137,227,72,117,140,29,182,192,23,207,137,239,56,64,130,19,44,104,101,206,109,239,80,225,30,138,56,90,229,144,122,15,42,39,128,26,10,143,195,243,237,72,131,25,174,161,250,60,170,138,232,175,225,5,28,158,103,107,152,245,53,83,58,59,138,27,94,120,11,237,84,92,29,106,72,81,35,1,53,84,81,35,25,213,89,173,92,4,117,135,138,34,3,219,83,53,68,149,43,74,239,43,50,121,43,172,14,195,73,112,138,1,141,91,198,123,23,35,156,37,3,138,139,134,236,185,198,81,39,71,78,138,135,228,12,62,83,95,180,197,247,84,249,187,234,246,221,23,246,210,250,242,122,164,29,227,26,37,21,206,98,148,146,170,252,162,221,143,30,122,168,84,187,188,105,143,49,125,7,21,60,254,199,99,0,154,52,230,207,255,164,159,135,251,35,20,132,127,197,8,184,209,178,61,220,67,209,248,107,143,250,115,183,244,59,202,186,128,96,235,185,232,181,183,16,189,35,139,166,61,170,65,218,16,16,15,224,115,132,237,115,35,172,220,164,67,131,125,182,242,115,85,49,23,224,43,153,149,70,202,217,34,173,0,14,101,233,12,188,143,118,34,40,116,230,11,235,184,208,247,243,19,194,229,133,111,197,244,108,103,118,81,246,106,67,209,242,238,194,188,93,18,159,250,232,100,120,198,157,51,125,36,72,238,180,205,52,238,177,75,94,195,82,175,199,40,135,89,76,187,109,94,166,183,103,43,205,47,4,0,24,136,239,238,230,13,95,79,220,227,144,86,24,181,32,109,95,48,42,109,83,233,246,45,89,198,59,91,121,68,79,56,38,182,71,100,99,4,190,9,180,31,11,112,151,71,199,116,30,232,127,219,221,152,203,8,81,47,29,219,72,30,29,78,106,103,13,169,178,134,69,195,112,12,34,227,244,163,80,9,55,166,195,193,40,207,183,28,128,167,3,240,56,0,255,26,64,112,13,32,18,0,38,14,166,94,208,126,54,112,236,195,30,30,157,251,230,176,214,15,220,19,159,30,173,96,156,171,203,210,200,123,152,179,130,195,197,108,219,64,188,225,199,32,204,240,211,102,193,172,202,139,168,100,66,192,32,236,58,170,174,45,34,130,117,139,174,53,50,106,243,215,200,53,177,44,201,124,164,237,19,23,101,150,225,250,48,245,4,31,120,49,129,223,184,238,11,182,53,124,244,54,23,69,192,189,35,10,40,227,248,26,28,235,26,82,160,65,114,119,42,18,154,204,224,81,51,168,237,14,101,102,102,143,81,88,130,181,208,27,87,3,147,27,200,155,20,82,166,18,115,58,151,227,232,92,212,48,26,99,21,42,179,217,46,204,32,36,251,66,136,87,153,225,226,227,159,125,131,171,130,212,102,18,29,201,112,218,180,136,202,89,67,249,198,6,231,158,241,170,179,4,27,166,13,166,33,219,13,187,133,99,242,38,47,219,227,143,202,46,161,38,189,128,138,54,63,60,155,120,255,243,108,178,131,72,99,197,50,88,153,47,141,166,126,94,108,177,162,120,118,78,148,192,2,113,238,89,47,142,96,141,91,119,62,191,76,6,145,61,114,30,95,113,204,123,140,241,76,5,220,163,127,180,193,221,104,173,177,49,208,140,189,90,118,108,183,219,85,116,8,208,247,241,186,151,178,79,11,109,1,98,252,169,60,158,154,182,71,117,175,41,140,18,76,94,210,226,19,136,167,33,147,187,56,212,8,244,68,4,140,64,94,182,191,225,235,174,244,220,118,240,254,212,148,52,100,212,104,27,43,68,66,127,74,30,209,114,82,242,110,81,179,186,56,68,164,28,132,173,69,242,92,246,22,23,102,178,172,134,237,117,6,70,29,182,128,112,115,238,15,214,177,249,253,99,8,205,7,233,119,31,130,255,0,236,100,112,59,45,112,250,172,237,213,110,163,204,115,179,9,208,40,235,211,185,255,87,255,118,194,63,223,81,36,176,239,221,111,179,195,208,108,38,153,111,94,101,65,191,172,29,68,206,111,244,177,180,131,39,83,193,72,26,158,101,125,89,7,92,136,105,204,70,30,26,176,123,122,223,86,43,80,205,45,148,186,235,64,215,0,100,253,27,89,249,253,194,250,11,59,34,254,168,116,80,67,156,96,88,3,197,83,45,113,139,18,83,217,228,180,14,186,50,9,160,225,192,31,135,188,12,146,20,55,2,226,168,189,25,137,17,49,41,203,132,0,125,195,202,103,147,245,201,59,24,126,116,40,229,13,63,68,19,238,56,209,70,59,201,167,24,108,62,135,6,38,250,12,158,138,51,9,175,199,100,167,147,220,182,129,26,70,200,132,158,124,46,236,44,167,194,66,14,156,183,17,83,212,236,86,99,197,10,167,24,176,246,115,216,144,60,40,248,13,221,165,136,110,67,153,191,209,115,152,160,204,210,63,214,115,152,143,104,156,7,92,234,3,158,115,133,193,230,115,104,171,158,243,62,222,123,158,163,195,148,118,17,180,251,160,120,128,55,175,108,49,221,71,16,231,33,111,52,110,49,157,248,19,31,104,159,143,153,213,129,63,114,13,133,177,1,162,172,128,220,154,74,214,81,161,189,247,247,6,68,104,248,222,158,64,91,88,17,232,185,28,44,7,242,190,100,149,211,101,1,39,111,27,210,127,234,223,200,225,200,149,25,126,178,111,148,140,235,62,76,149,194,86,105,251,184,190,246,66,1,171,105,166,94,216,184,156,197,57,216,120,115,185,153,193,113,214,64,153,212,25,110,150,210,24,255,90,121,89,85,107,34,75,170,117,14,252,238,246,220,145,246,30,174,112,218,179,53,250,119,88,129,50,252,26,187,31,103,162,64,117,86,225,139,180,202,235,115,20,117,94,118,224,53,153,34,228,108,30,74,69,155,181,83,212,68,170,107,110,25,69,85,53,23,49,235,82,121,95,51,154,44,42,203,182,54,189,41,115,141,70,60,85,219,179,7,104,28,203,33,47,174,160,254,56,85,193,37,204,207,163,139,198,204,112,142,206,85,127,165,212,255,193,220,207,31,232,65,252,151,101,17,201,137,149,233,31,47,140,93,118,22,219,98,125,89,144,133,20,231,128,183,70,209,15,19,227,7,91,103,141,176,100,39,125,10,160,93,32,2,48,124,149,141,121,27,188,212,100,132,46,239,248,203,140,93,138,42,252,232,110,214,188,100,34,13,115,166,45,238,103,201,228,32,83,87,39,125,22,190,145,158,164,192,149,34,209,221,218,115,157,24,204,254,67,78,115,38,255,241,149,141,47,145,218,106,96,211,12,37,7,40,159,86,43,135,245,39,170,181,20,106,139,14,165,38,222,117,8,205,222,78,88,4,86,198,175,175,0,159,83,51,139,48,79,167,178,81,4,210,242,186,38,166,6,102,248,186,15,24,221,9,173,109,152,183,202,66,236,44,61,205,249,106,219,82,3,170,157,75,85,94,161,63,190,214,55,95,170,186,153,130,178,110,211,13,136,102,180,83,7,229,129,63,200,206,76,149,156,78,60,121,241,191,145,172,148,197,29,49,83,123,115,68,114,189,172,64,74,223,31,158,73,114,89,150,7,150,221,162,167,22,192,33,233,206,206,191,156,117,91,143,206,186,28,95,62,122,80,60,155,150,71,238,24,31,62,6,254,35,133,100,246,154,92,237,253,124,58,125,158,239,10,75,250,82,171,4,118,83,248,38,162,227,21,226,171,36,217,5,226,47,95,27,190,129,163,101,134,235,76,81,250,95,190,140,124,3,83,203,12,215,153,162,244,191,122,197,249,6,158,230,9,174,178,196,200,127,233,222,244,13,252,48,234,87,153,97,180,191,120,19,251,6,118,38,250,87,25,98,212,7,90,150,205,55,140,232,201,172,193,14,223,199,83,218,241,196,149,28,250,112,149,237,234,69,129,195,252,53,128,47,156,50,112,186,97,95,201,8,67,115,250,113,236,221,102,96,75,203,255,29,219,172,6,46,179,127,255,124,87,159,143,119,191,113,87,47,34,124,28,153,164,252,115,11,59,61,22,17,174,84,145,83,76,190,18,112,199,139,98,164,49,253,203,185,178,107,244,189,124,162,7,151,203,213,49,241,122,133,207,125,139,101,145,121,122,184,244,72,201,237,24,169,77,52,8,19,144,99,246,170,236,128,147,254,173,194,108,241,95,238,128,136,39,59,100,197,148,145,167,51,176,78,184,82,34,67,25,232,162,200,255,238,173,33,98,29,218,213,24,157,125,183,219,29,154,115,79,32,201,221,1,221,233,174,144,174,124,242,186,165,135,74,122,133,206,212,62,204,219,230,248,72,78,6,55,102,223,192,155,128,188,164,54,169,174,137,75,80,204,9,252,189,78,165,8,104,157,74,144,251,70,104,85,243,227,2,141,46,99,81,102,145,171,153,125,55,158,14,81,189,209,175,30,8,154,33,14,241,57,181,128,9,152,90,128,196,45,58,1,120,147,194,190,171,144,5,234,170,54,102,208,1,194,196,238,161,238,30,219,184,191,144,243,156,57,24,104,113,53,220,147,231,160,175,24,31,79,253,155,176,239,133,52,76,182,175,83,215,118,138,48,105,120,73,56,226,131,111,223,216,215,34,38,205,161,211,9,216,68,117,58,6,15,195,131,237,71,74,59,237,134,101,64,133,14,101,216,70,56,161,147,54,115,164,43,59,123,247,18,214,122,214,190,125,251,142,200,119,67,244,1,180,210,155,245,197,47,176,9,7,240,244,251,111,234,78,68,189,180,55,113,22,142,73,89,184,49,78,203,105,149,205,241,104,228,202,249,162,181,157,115,252,220,82,117,184,54,253,16,51,47,99,19,64,157,155,62,207,223,87,99,89,121,4,160,199,253,176,223,175,113,107,170,227,160,100,188,124,209,109,232,190,63,73,125,94,181,145,205,60,224,205,66,175,101,103,156,80,95,152,246,235,242,225,210,65,242,123,198,49,120,233,219,129,189,159,174,226,29,72,135,103,116,56,210,208,199,221,4,220,245,24,87,228,235,61,34,134,207,99,100,168,71,22,13,236,206,72,203,54,173,240,21,108,143,97,211,136,23,209,137,101,165,0,80,169,143,247,59,41,141,149,25,162,117,188,159,132,57,132,11,149,244,9,115,174,58,45,192,253,112,13,133,16,249,30,150,197,206,207,200,5,67,121,67,227,109,233,13,166,3,119,201,144,239,191,141,235,156,71,191,173,195,72,9,65,27,82,135,94,35,170,141,155,49,212,8,166,97,5,164,234,216,206,111,133,57,216,22,104,237,114,215,120,107,117,234,139,93,184,219,76,250,107,174,227,30,251,118,4,230,212,183,195,235,146,215,130,254,9,156,120,94,52,166,13,94,113,62,38,26,74,8,161,171,148,184,152,126,143,202,120,126,63,33,210,35,87,221,89,125,146,36,154,131,226,44,203,86,72,168,199,182,64,65,190,46,96,107,180,5,128,110,230,236,189,225,191,54,182,22,18,32,61,0,0 };