diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index a7f20b6..7b21206 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -37,6 +37,7 @@
+
diff --git a/server/www/teleport/static/css/dashboard.css b/server/www/teleport/static/css/dashboard.css
index 374ae0b..3bf4f15 100644
--- a/server/www/teleport/static/css/dashboard.css
+++ b/server/www/teleport/static/css/dashboard.css
@@ -1 +1 @@
-@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}#page-container{min-width:1260px}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}hr.small{margin:5px 0}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:'Font Awesome 5 Free' !important;font-weight:900 !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}.page-content-dashboard{padding:20px 25px}.sys-msg{border:1px solid #ff8987;border-radius:5px;background-color:#ffbdb7;padding:10px;margin-bottom:10px;text-align:center;display:none}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:10px;padding-left:10px}.stats{overflow:hidden;color:#686868;background-color:#fff;margin-bottom:10px}.stats.stats-id-host{border-top:5px solid #348fe2;background-color:#e7f1fb}.stats.stats-id-user{border-top:5px solid #f57523;background-color:#feefe6}.stats.stats-id-account{border-top:5px solid #d34242;background-color:#fae7e7}.stats.stats-id-connect{border-top:5px solid #368142;background-color:#def1e1}.stats.stats-box{position:relative;height:98px;box-shadow:1px 1px 2px rgba(0,0,0,0.3)}.stats.stats-box .stats-content{padding-left:20px}.stats.stats-box .stats-icon{font-size:130px;line-height:130px;top:5px;right:-40px;position:absolute;color:rgba(0,0,0,0.07)}.stats.stats-box .stats-name{font-size:16px;font-weight:500;padding-top:10px;color:rgba(0,0,0,0.6)}.stats.stats-box .stats-value{display:inline;color:rgba(0,0,0,0.6);cursor:pointer;font-size:42px;font-weight:300;white-space:nowrap;padding-left:20px}.stats.stats-bar{position:relative;height:200px;padding:8px;box-shadow:1px 1px 2px rgba(0,0,0,0.3)}.stats.stats-bar .stats-value{margin-top:5px;height:180px}.stats.stats-first{border-left:none}.stats a{color:#eee;color:rgba(255,255,255,0.7)}.stats a:hover{color:#fff}/*# sourceMappingURL=dashboard.css.map */
\ No newline at end of file
+@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}hr.small{margin:5px 0}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}button:focus{outline:none}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}#page-container{min-width:1260px}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:none}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:'Font Awesome 5 Free' !important;font-weight:900 !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}.page-content-dashboard{padding:20px 25px}.sys-msg{border:1px solid #ff8987;border-radius:5px;background-color:#ffbdb7;padding:10px;margin-bottom:10px;text-align:center;display:none}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:10px;padding-left:10px}.stats{overflow:hidden;color:#686868;background-color:#fff;margin-bottom:10px}.stats.stats-id-host{border-top:5px solid #348fe2;background-color:#e7f1fb}.stats.stats-id-user{border-top:5px solid #f57523;background-color:#feefe6}.stats.stats-id-account{border-top:5px solid #d34242;background-color:#fae7e7}.stats.stats-id-connect{border-top:5px solid #368142;background-color:#def1e1}.stats.stats-box{position:relative;height:98px;box-shadow:1px 1px 2px rgba(0,0,0,0.3)}.stats.stats-box .stats-content{padding-left:20px}.stats.stats-box .stats-icon{font-size:130px;line-height:130px;top:5px;right:-40px;position:absolute;color:rgba(0,0,0,0.07)}.stats.stats-box .stats-name{font-size:16px;font-weight:500;padding-top:10px;color:rgba(0,0,0,0.6)}.stats.stats-box .stats-value{display:inline;color:rgba(0,0,0,0.6);cursor:pointer;font-size:42px;font-weight:300;white-space:nowrap;padding-left:20px}.stats.stats-bar{position:relative;height:200px;padding:8px;box-shadow:1px 1px 2px rgba(0,0,0,0.3)}.stats.stats-bar .stats-value{margin-top:5px;height:180px}.stats.stats-first{border-left:none}.stats a{color:#eee;color:rgba(255,255,255,0.7)}.stats a:hover{color:#fff}/*# sourceMappingURL=dashboard.css.map */
\ No newline at end of file
diff --git a/server/www/teleport/static/css/login.css b/server/www/teleport/static/css/login.css
index 9c02c22..276b40d 100644
--- a/server/www/teleport/static/css/login.css
+++ b/server/www/teleport/static/css/login.css
@@ -1 +1 @@
-@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}#page-container{min-width:1260px}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}hr.small{margin:5px 0}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}body{padding:0;margin:0;overflow:hidden}.bg-blur{position:fixed;top:-20px;left:-20px}.bg-blur-overlay{position:absolute;width:100%;height:100%;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSI0NiUiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0b3Atb3BhY2l0eT0iMC4wOCIvPjxzdG9wIG9mZnNldD0iNTklIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAuMDgiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0b3Atb3BhY2l0eT0iMC45Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background-size:100%;background-image:-webkit-gradient(linear, 50% 0, 50% 100%, color-stop(46%, rgba(0,0,0,0.08)), color-stop(59%, rgba(0,0,0,0.08)), color-stop(100%, rgba(0,0,0,0.9)));background-image:-moz-linear-gradient(top, rgba(0,0,0,0.08) 46%, rgba(0,0,0,0.08) 59%, rgba(0,0,0,0.9) 100%);background-image:-webkit-linear-gradient(top, rgba(0,0,0,0.08) 46%, rgba(0,0,0,0.08) 59%, rgba(0,0,0,0.9) 100%);background-image:linear-gradient(to bottom, rgba(0,0,0,0.08) 46%, rgba(0,0,0,0.08) 59%, rgba(0,0,0,0.9) 100%)}.container{min-width:460px}#page-header nav.navbar{height:70px;margin-bottom:0;border:none;background-color:rgba(0,0,0,0.6);color:#fff}#page-header nav li{display:inline-block;float:left}#page-header .logo{position:relative;margin-top:10px;display:inline-block}#page-header .desc{position:relative;display:inline-block;color:#ccc;top:32px;font-size:24px;vertical-align:baseline;font-family:"Kai","华文楷体","楷体","Microsoft YaHei","微软雅黑",Helvetica,Arial,sans-serif}#page-footer nav.navbar{min-height:36px;height:36px;line-height:36px;background-color:rgba(0,0,0,0.6);font-size:12px;color:#6d6d6d}#page-footer nav.navbar .container{height:24px}#page-footer nav.navbar p{margin:0 auto;text-align:center}.auth-box-container{position:fixed;left:0;top:70px;width:100%}.auth-box-container .auth-box{margin:80px auto 0 auto;width:450px;border:1px solid #fff;border-radius:8px;background-color:rgba(255,255,255,0.6);box-shadow:0 5px 50px rgba(0,0,0,0.9)}.auth-box-container .auth-box .header{min-height:50px;height:50px;border:none;box-shadow:none;border-bottom:1px solid rgba(255,255,255,0.3)}.auth-box-container .auth-box .header .title{display:inline-block;float:left;margin-left:60px;height:24px;margin-top:25px;line-height:16px;font-size:20px;color:#484848}.auth-box-container .auth-box .header .title:hover{border-bottom:2px solid #5396eb}.auth-box-container .auth-box .header .selected{border-bottom:2px solid #4882cc;color:#262b40}.auth-box-container .auth-box .inputarea{margin:30px}.auth-box-container .auth-box .inputarea .input-group-addon{padding:0 10px}.auth-box-container .auth-box .inputarea p.input-addon-desc{text-align:right;padding:0 5px 0 5px;color:#636363}.auth-box-container .auth-box .inputbox{margin-bottom:20px}.auth-box-container .auth-box .op_box{display:block;padding:5px;border-radius:3px;text-align:center;margin:5px 20px 10px 20px}.auth-box-container .auth-box .op_error{background:rgba(255,5,0,0.5);color:#fff}.auth-box-container .auth-box .op_wait{background:rgba(255,255,255,0.3)}#slogan-box{padding-top:80px}#msg-slogan{text-align:right;font-size:24px;line-height:48px;font-family:"Kai","华文楷体","楷体","Microsoft YaHei","微软雅黑",Helvetica,Arial,sans-serif;color:rgba(255,255,255,0.5)}@media screen and (max-width:990px){#slogan-box{display:none}.auth-box{margin:30px auto 0 auto}}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}/*# sourceMappingURL=login.css.map */
\ No newline at end of file
+@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}hr.small{margin:5px 0}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}button:focus{outline:none}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}#page-container{min-width:1260px}body{padding:0;margin:0;overflow:hidden}.bg-blur{position:fixed;top:-20px;left:-20px}.bg-blur-overlay{position:absolute;width:100%;height:100%;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSI0NiUiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0b3Atb3BhY2l0eT0iMC4wOCIvPjxzdG9wIG9mZnNldD0iNTklIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAuMDgiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0b3Atb3BhY2l0eT0iMC45Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');background-size:100%;background-image:-webkit-gradient(linear, 50% 0, 50% 100%, color-stop(46%, rgba(0,0,0,0.08)), color-stop(59%, rgba(0,0,0,0.08)), color-stop(100%, rgba(0,0,0,0.9)));background-image:-moz-linear-gradient(top, rgba(0,0,0,0.08) 46%, rgba(0,0,0,0.08) 59%, rgba(0,0,0,0.9) 100%);background-image:-webkit-linear-gradient(top, rgba(0,0,0,0.08) 46%, rgba(0,0,0,0.08) 59%, rgba(0,0,0,0.9) 100%);background-image:linear-gradient(to bottom, rgba(0,0,0,0.08) 46%, rgba(0,0,0,0.08) 59%, rgba(0,0,0,0.9) 100%)}.container{min-width:460px}#page-header nav.navbar{height:70px;margin-bottom:0;border:none;background-color:rgba(0,0,0,0.6);color:#fff}#page-header nav li{display:inline-block;float:left}#page-header .logo{position:relative;margin-top:10px;display:inline-block}#page-header .desc{position:relative;display:inline-block;color:#ccc;top:32px;font-size:24px;vertical-align:baseline;font-family:"Kai","华文楷体","楷体","Microsoft YaHei","微软雅黑",Helvetica,Arial,sans-serif}#page-footer nav.navbar{min-height:36px;height:36px;line-height:36px;background-color:rgba(0,0,0,0.6);font-size:12px;color:#6d6d6d}#page-footer nav.navbar .container{height:24px}#page-footer nav.navbar p{margin:0 auto;text-align:center}.auth-box-container{position:fixed;left:0;top:70px;width:100%}.auth-box-container .auth-box{margin:80px auto 0 auto;width:450px;border:1px solid #fff;border-radius:8px;background-color:rgba(255,255,255,0.6);box-shadow:0 5px 50px rgba(0,0,0,0.9)}.auth-box-container .auth-box .header{min-height:50px;height:50px;border:none;box-shadow:none;border-bottom:1px solid rgba(255,255,255,0.3)}.auth-box-container .auth-box .header .title{display:inline-block;float:left;margin-left:60px;height:24px;margin-top:25px;line-height:16px;font-size:20px;color:#484848}.auth-box-container .auth-box .header .title:hover{border-bottom:2px solid #5396eb}.auth-box-container .auth-box .header .selected{border-bottom:2px solid #4882cc;color:#262b40}.auth-box-container .auth-box .inputarea{margin:30px}.auth-box-container .auth-box .inputarea .input-group-addon{padding:0 10px}.auth-box-container .auth-box .inputarea p.input-addon-desc{text-align:right;padding:0 5px 0 5px;color:#636363}.auth-box-container .auth-box .inputbox{margin-bottom:20px}.auth-box-container .auth-box .op_box{display:block;padding:5px;border-radius:3px;text-align:center;margin:5px 20px 10px 20px}.auth-box-container .auth-box .op_error{background:rgba(255,5,0,0.5);color:#fff}.auth-box-container .auth-box .op_wait{background:rgba(255,255,255,0.3)}#slogan-box{padding-top:80px}#msg-slogan{text-align:right;font-size:24px;line-height:48px;font-family:"Kai","华文楷体","楷体","Microsoft YaHei","微软雅黑",Helvetica,Arial,sans-serif;color:rgba(255,255,255,0.5)}@media screen and (max-width:990px){#slogan-box{display:none}.auth-box{margin:30px auto 0 auto}}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:none}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}/*# sourceMappingURL=login.css.map */
\ No newline at end of file
diff --git a/server/www/teleport/static/css/single.css b/server/www/teleport/static/css/single.css
index 82c5e29..2707b7a 100644
--- a/server/www/teleport/static/css/single.css
+++ b/server/www/teleport/static/css/single.css
@@ -1 +1 @@
-@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}#page-container{min-width:1260px}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}hr.small{margin:5px 0}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}.table{margin-bottom:10px}.table>thead>tr>th{vertical-align:middle;border-bottom:2px solid #ddd}.table.table-info-list{width:auto}.table.table-info-list td{border-top:1px dotted #ddd;padding:5px 5px;vertical-align:top}.table.table-info-list td.key{text-align:right;width:1px;white-space:nowrap}.table.table-info-list td.value{text-align:left;font-weight:bold;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;color:#3e3e3e}.table.table-info-list td .error{color:#cc3632;font-weight:bold}.table.table-info-list td .disabled{color:#848484}.table.table-info-list.table-info-list-lite{width:100%}.table.table-info-list.table-info-list-lite td{padding:5px 5px}.table.table-info-list.table-info-list-lite td.value{font-weight:normal}.table.table-info-list tr:first-child td{border-top:none}.table.table-config-list{width:100%}.table.table-config-list td{border:none;padding:5px}.table.table-config-list td.title{text-align:left;font-size:110%;font-weight:bolder}.table.table-config-list td.key{width:1px;white-space:nowrap;text-align:right;padding-right:15px}.table.table-config-list td.value{text-align:left}.table.table-config-list td.value input{width:4em;padding:0 5px;text-align:right}.table.table-config-list td.value .unit{margin-left:5px}.table.table-config-list td.value .desc{color:#999;margin-left:15px;display:inline-block}.table>thead>tr>th{padding:5px 5px;outline:none;white-space:nowrap;font-weight:normal;text-align:center;background-color:#ededed}.table>tbody>tr>td{padding:5px;text-align:center;vertical-align:middle}.table>tbody>tr>td .nowrap{white-space:nowrap}.table-data td.loading{text-align:left;padding:20px}.table-data .btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.table.table-data thead .sorting,.table.table-data thead .sorting_asc,.table.table-data thead .sorting_desc{cursor:pointer}.table.table-data thead .sorting:after,.table.table-data thead .sorting_asc:after,.table.table-data thead .sorting_desc:after{bottom:4px;padding-left:5px;display:inline-block;font-family:'Font Awesome 5 Free';font-weight:900;opacity:.8}.table.table-data thead .sorting:after{opacity:.2;content:"\f0dc"}.table.table-data thead .sorting_asc:after{content:"\f0de"}.table.table-data thead .sorting_desc:after{content:"\f0dd"}.host-name{font-size:16px}.host-name-desc{cursor:pointer}.host-ip{font-size:12px;color:#999;display:inline-block;white-space:nowrap;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;overflow:hidden;text-overflow:ellipsis}.td-ip-list{padding-right:20px;padding-left:5px}.td-ip-show-more{font-size:14px;width:12px;float:right;display:block}.td-ip-item{min-width:12em;width:12em;height:18px;padding:2px 4px;margin:1px 0;color:#333;text-align:center;white-space:nowrap;border-radius:9px;line-height:11px;font-size:11px;background:#dfdfdf !important}.td-ip-item span{display:inline-block;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;font-size:11px;font-weight:400}.td-ip-item a{display:inline-block;width:14px;float:right;font-size:14px}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}body{padding:0;margin:0}#page-content{margin-bottom:44px}#page-footer nav.navbar{min-height:24px;height:24px;line-height:24px;background-color:#cdcdcd;font-size:12px;color:#6d6d6d}#page-footer nav.navbar .container{height:24px}#page-footer nav.navbar p{margin:0 auto;text-align:center}.page-header{box-shadow:0 0 3px rgba(0,0,0,0.5);min-height:48px;top:0;width:100%;height:48px;margin:0 0 10px;border:none;background-color:#2a2a2a}.page-header .top-navbar{min-height:48px;height:48px;line-height:47px;background-color:#3a3a3a;color:#ccc}.page-header .top-navbar a{color:#d5d5d5}.page-header .top-navbar a:hover{color:#5a8fee}.page-header .top-navbar .brand{float:left;display:inline-block;padding:12px 0;margin:0}.page-header .top-navbar .brand .site-logo{display:block;width:86px;height:24px;background:url(../img/site-logo-small.png) no-repeat}.page-header .top-navbar .breadcrumb-container{float:left;display:inline-block;margin:0;padding:0}.page-header .top-navbar .breadcrumb-container .breadcrumb{background-color:#3a3a3a;margin:0;border-radius:0;border:none;padding:0 0 0 20px;font-size:16px;color:#ccc}.page-header .top-navbar .breadcrumb-container .breadcrumb>li+li:before{font-size:18px;padding:0 5px;color:#555;content:'|'}.page-header .top-navbar .breadcrumb-container .breadcrumb>li.title{font-size:18px}.page-header .top-navbar .breadcrumb-container .breadcrumb>li.sub-title{font-size:14px;color:#b3b3b3;line-height:44px}.page-header .top-navbar .status-container{float:right}.op_box{display:block;padding:5px;margin:0}.op_box.op_error{background-color:#ffb8b5;border:1px solid #d47e7b;color:#333}.op_box.op_wait{background:#e5e5e5;border:1px solid #a8a8a8;color:#333}.op_box.op_success{background:#acf1b2;border:1px solid #82df82;color:#333}.info-box{width:100%;margin:30px auto}.info-box .info-icon-box{z-index:-1;position:absolute;min-height:194px;overflow:hidden}.info-box .info-icon-box>.fas,.info-box .info-icon-box .fa{margin-top:30px;font-size:164px}.info-box .info-message-box{min-height:328px;border:1px solid #fff;background-color:rgba(255,255,255,0.76);box-shadow:2px 2px 3px rgba(0,0,0,0.3);padding:15px 20px 35px 30px;margin-left:98.4px}.info-box .info-message-box .title{font-size:180%;margin:15px 0}.info-box .info-message-box hr{border-top:none;border-bottom:1px dashed #d3d3d3}.info-box .op_box{margin:5px 0;text-align:center}.content-box{background-color:#fff;padding:20px;box-shadow:1px 1px 1px rgba(0,0,0,0.3)}.content-box .welcome-message .fa{display:block;color:#ff272a;font-size:18px;float:left}.content-box .welcome-message span{display:block;line-height:18px;padding-left:23px}.content-box .table{width:auto;margin-left:20px}.content-box .table td{border-top:1px dotted #ddd;padding:5px}.content-box .table td.key{text-align:right}.content-box .table td.value{text-align:left;font-weight:bold}.content-box .table tr:first-child td{border-top:none}.content-box table.form{width:auto;margin-left:20px}.content-box table.form td{padding:5px;line-height:1.42857143;vertical-align:middle}.content-box table.form td.key{text-align:right}.content-box table.form td label{margin-bottom:0}.content-box table.form td .form-control{height:30px;padding:5px 10px;font-size:inherit;line-height:inherit}.content-box h1 .fa-spin{color:#aaa}.content-box h1{font-size:180%}.content-box h2{font-size:140%}.content-box .op_box{margin:5px 0}.content-box .steps-detail{display:none;margin:10px;padding:10px;border:1px solid #b4b4b4;background-color:#dcdcdc}.content-box .steps-detail p{padding-left:5px;margin:2px 0 2px 1px}.content-box .steps-detail p.error{color:#fff;margin:2px 0 2px 0;background-color:#cc3632;border:1px solid #9c2a26}.content-box .alert.alert-warning{color:#6a542d;border:1px solid #e2cab4;background-color:#ffe4cb}.content-box .error{color:#cc3632}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:'Font Awesome 5 Free' !important;font-weight:900 !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}/*# sourceMappingURL=single.css.map */
\ No newline at end of file
+@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}hr.small{margin:5px 0}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}button:focus{outline:none}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}#page-container{min-width:1260px}.table{margin-bottom:10px}.table>thead>tr>th{vertical-align:middle;border-bottom:2px solid #ddd}.table.table-info-list{width:auto}.table.table-info-list td{border-top:1px dotted #ddd;padding:5px 5px;vertical-align:top}.table.table-info-list td.key{text-align:right;width:1px;white-space:nowrap}.table.table-info-list td.value{text-align:left;font-weight:bold;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;color:#3e3e3e}.table.table-info-list td .error{color:#cc3632;font-weight:bold}.table.table-info-list td .disabled{color:#848484}.table.table-info-list.table-info-list-lite{width:100%}.table.table-info-list.table-info-list-lite td{padding:5px 5px}.table.table-info-list.table-info-list-lite td.value{font-weight:normal}.table.table-info-list tr:first-child td{border-top:none}.table.table-config-list{width:100%}.table.table-config-list td{border:none;padding:5px}.table.table-config-list td.title{text-align:left;font-size:110%;font-weight:bolder}.table.table-config-list td.key{width:1px;white-space:nowrap;text-align:right;padding-right:15px}.table.table-config-list td.value{text-align:left}.table.table-config-list td.value input{width:4em;padding:0 5px;text-align:right}.table.table-config-list td.value .unit{margin-left:5px}.table.table-config-list td.value .desc{color:#999;margin-left:15px;display:inline-block}.table>thead>tr>th{padding:5px 5px;outline:none;white-space:nowrap;font-weight:normal;text-align:center;background-color:#ededed}.table>tbody>tr>td{padding:5px;text-align:center;vertical-align:middle}.table>tbody>tr>td .nowrap{white-space:nowrap}.table-data td.loading{text-align:left;padding:20px}.table-data .btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.table.table-data thead .sorting,.table.table-data thead .sorting_asc,.table.table-data thead .sorting_desc{cursor:pointer}.table.table-data thead .sorting:after,.table.table-data thead .sorting_asc:after,.table.table-data thead .sorting_desc:after{bottom:4px;padding-left:5px;display:inline-block;font-family:'Font Awesome 5 Free';font-weight:900;opacity:.8}.table.table-data thead .sorting:after{opacity:.2;content:"\f0dc"}.table.table-data thead .sorting_asc:after{content:"\f0de"}.table.table-data thead .sorting_desc:after{content:"\f0dd"}.host-name{font-size:16px}.host-name-desc{cursor:pointer}.host-ip{font-size:12px;color:#999;display:inline-block;white-space:nowrap;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;overflow:hidden;text-overflow:ellipsis}.td-ip-list{padding-right:20px;padding-left:5px}.td-ip-show-more{font-size:14px;width:12px;float:right;display:block}.td-ip-item{min-width:12em;width:12em;height:18px;padding:2px 4px;margin:1px 0;color:#333;text-align:center;white-space:nowrap;border-radius:9px;line-height:11px;font-size:11px;background:#dfdfdf !important}.td-ip-item span{display:inline-block;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;font-size:11px;font-weight:400}.td-ip-item a{display:inline-block;width:14px;float:right;font-size:14px}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:none}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}body{padding:0;margin:0}#page-content{margin-bottom:44px}#page-footer nav.navbar{min-height:24px;height:24px;line-height:24px;background-color:#cdcdcd;font-size:12px;color:#6d6d6d}#page-footer nav.navbar .container{height:24px}#page-footer nav.navbar p{margin:0 auto;text-align:center}.page-header{box-shadow:0 0 3px rgba(0,0,0,0.5);min-height:48px;top:0;width:100%;height:48px;margin:0 0 10px;border:none;background-color:#2a2a2a}.page-header .top-navbar{min-height:48px;height:48px;line-height:47px;background-color:#3a3a3a;color:#ccc}.page-header .top-navbar a{color:#d5d5d5}.page-header .top-navbar a:hover{color:#5a8fee}.page-header .top-navbar .brand{float:left;display:inline-block;padding:12px 0;margin:0}.page-header .top-navbar .brand .site-logo{display:block;width:86px;height:24px;background:url(../img/site-logo-small.png) no-repeat}.page-header .top-navbar .breadcrumb-container{float:left;display:inline-block;margin:0;padding:0}.page-header .top-navbar .breadcrumb-container .breadcrumb{background-color:#3a3a3a;margin:0;border-radius:0;border:none;padding:0 0 0 20px;font-size:16px;color:#ccc}.page-header .top-navbar .breadcrumb-container .breadcrumb>li+li:before{font-size:18px;padding:0 5px;color:#555;content:'|'}.page-header .top-navbar .breadcrumb-container .breadcrumb>li.title{font-size:18px}.page-header .top-navbar .breadcrumb-container .breadcrumb>li.sub-title{font-size:14px;color:#b3b3b3;line-height:44px}.page-header .top-navbar .status-container{float:right}.op_box{display:block;padding:5px;margin:0}.op_box.op_error{background-color:#ffb8b5;border:1px solid #d47e7b;color:#333}.op_box.op_wait{background:#e5e5e5;border:1px solid #a8a8a8;color:#333}.op_box.op_success{background:#acf1b2;border:1px solid #82df82;color:#333}.info-box{width:100%;margin:30px auto}.info-box .info-icon-box{z-index:-1;position:absolute;min-height:194px;overflow:hidden}.info-box .info-icon-box>.fas,.info-box .info-icon-box .fa{margin-top:30px;font-size:164px}.info-box .info-message-box{min-height:328px;border:1px solid #fff;background-color:rgba(255,255,255,0.76);box-shadow:2px 2px 3px rgba(0,0,0,0.3);padding:15px 20px 35px 30px;margin-left:98.4px}.info-box .info-message-box .title{font-size:180%;margin:15px 0}.info-box .info-message-box hr{border-top:none;border-bottom:1px dashed #d3d3d3}.info-box .op_box{margin:5px 0;text-align:center}.content-box{background-color:#fff;padding:20px;box-shadow:1px 1px 1px rgba(0,0,0,0.3)}.content-box .welcome-message .fa{display:block;color:#ff272a;font-size:18px;float:left}.content-box .welcome-message span{display:block;line-height:18px;padding-left:23px}.content-box .table{width:auto;margin-left:20px}.content-box .table td{border-top:1px dotted #ddd;padding:5px}.content-box .table td.key{text-align:right}.content-box .table td.value{text-align:left;font-weight:bold}.content-box .table tr:first-child td{border-top:none}.content-box table.form{width:auto;margin-left:20px}.content-box table.form td{padding:5px;line-height:1.42857143;vertical-align:middle}.content-box table.form td.key{text-align:right}.content-box table.form td label{margin-bottom:0}.content-box table.form td .form-control{height:30px;padding:5px 10px;font-size:inherit;line-height:inherit}.content-box h1 .fa-spin{color:#aaa}.content-box h1{font-size:180%}.content-box h2{font-size:140%}.content-box .op_box{margin:5px 0}.content-box .steps-detail{display:none;margin:10px;padding:10px;border:1px solid #b4b4b4;background-color:#dcdcdc}.content-box .steps-detail p{padding-left:5px;margin:2px 0 2px 1px}.content-box .steps-detail p.error{color:#fff;margin:2px 0 2px 0;background-color:#cc3632;border:1px solid #9c2a26}.content-box .alert.alert-warning{color:#6a542d;border:1px solid #e2cab4;background-color:#ffe4cb}.content-box .error{color:#cc3632}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:'Font Awesome 5 Free' !important;font-weight:900 !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}/*# sourceMappingURL=single.css.map */
\ No newline at end of file
diff --git a/server/www/teleport/static/css/style.css b/server/www/teleport/static/css/style.css
index bee247e..d682e3b 100644
--- a/server/www/teleport/static/css/style.css
+++ b/server/www/teleport/static/css/style.css
@@ -1 +1 @@
-@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}#page-container{min-width:1260px}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}hr.small{margin:5px 0}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}.table.table-role .header{font-size:120%;margin-top:8px}.table.table-role td{text-align:left;vertical-align:top;padding:0}.table.table-role td.role-name{min-width:160px}.table.table-role td.role-name ul{list-style:none;margin:0;padding:0}.table.table-role td.role-name ul li{padding:8px 30px 8px 6px;white-space:nowrap}.table.table-role td.role-name ul li:first-child{margin-top:10px}.table.table-role td.role-name ul li.active{color:#fff;background-color:#4091dd}.table.table-role td.role-name ul li.active:hover{background-color:#4091dd;cursor:auto}.table.table-role td.role-name ul li:hover{background-color:#81b6e9;cursor:pointer}.table.table-role td.role-privilege{padding:0 0 10px 10px;border-left:3px solid #4091dd}.table.table-role td.role-privilege hr{margin:8px 0;border-bottom:1px solid rgba(255,255,255,0.3)}.table.table-role td.role-privilege .title{font-size:110%;margin:5px 0}.table.table-role td.role-privilege ul{list-style:none;margin:0;padding:0}.table.table-role td.role-privilege ul li{display:inline-block;width:180px;margin-bottom:5px;margin-left:10px}.table.table-role td.role-privilege ul li span{color:#8e8e8e}.table.table-role td.role-privilege ul li span:before{display:inline-block;width:16px;content:"\f0c8";font-family:'Font Awesome 5 Free';font-weight:400}.table.table-role td.role-privilege ul li span.enabled{color:#3374b0}.table.table-role td.role-privilege ul li span.enabled:before{content:"\f14a";font-family:'Font Awesome 5 Free';font-weight:400}.table.table-role td.role-privilege.editable li span{cursor:pointer}.table.table-role tr:first-child td{border-top:none}#btn-create-role{margin-top:15px}.table{margin-bottom:10px}.table>thead>tr>th{vertical-align:middle;border-bottom:2px solid #ddd}.table.table-info-list{width:auto}.table.table-info-list td{border-top:1px dotted #ddd;padding:5px 5px;vertical-align:top}.table.table-info-list td.key{text-align:right;width:1px;white-space:nowrap}.table.table-info-list td.value{text-align:left;font-weight:bold;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;color:#3e3e3e}.table.table-info-list td .error{color:#cc3632;font-weight:bold}.table.table-info-list td .disabled{color:#848484}.table.table-info-list.table-info-list-lite{width:100%}.table.table-info-list.table-info-list-lite td{padding:5px 5px}.table.table-info-list.table-info-list-lite td.value{font-weight:normal}.table.table-info-list tr:first-child td{border-top:none}.table.table-config-list{width:100%}.table.table-config-list td{border:none;padding:5px}.table.table-config-list td.title{text-align:left;font-size:110%;font-weight:bolder}.table.table-config-list td.key{width:1px;white-space:nowrap;text-align:right;padding-right:15px}.table.table-config-list td.value{text-align:left}.table.table-config-list td.value input{width:4em;padding:0 5px;text-align:right}.table.table-config-list td.value .unit{margin-left:5px}.table.table-config-list td.value .desc{color:#999;margin-left:15px;display:inline-block}.table>thead>tr>th{padding:5px 5px;outline:none;white-space:nowrap;font-weight:normal;text-align:center;background-color:#ededed}.table>tbody>tr>td{padding:5px;text-align:center;vertical-align:middle}.table>tbody>tr>td .nowrap{white-space:nowrap}.table-data td.loading{text-align:left;padding:20px}.table-data .btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.table.table-data thead .sorting,.table.table-data thead .sorting_asc,.table.table-data thead .sorting_desc{cursor:pointer}.table.table-data thead .sorting:after,.table.table-data thead .sorting_asc:after,.table.table-data thead .sorting_desc:after{bottom:4px;padding-left:5px;display:inline-block;font-family:'Font Awesome 5 Free';font-weight:900;opacity:.8}.table.table-data thead .sorting:after{opacity:.2;content:"\f0dc"}.table.table-data thead .sorting_asc:after{content:"\f0de"}.table.table-data thead .sorting_desc:after{content:"\f0dd"}.host-name{font-size:16px}.host-name-desc{cursor:pointer}.host-ip{font-size:12px;color:#999;display:inline-block;white-space:nowrap;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;overflow:hidden;text-overflow:ellipsis}.td-ip-list{padding-right:20px;padding-left:5px}.td-ip-show-more{font-size:14px;width:12px;float:right;display:block}.td-ip-item{min-width:12em;width:12em;height:18px;padding:2px 4px;margin:1px 0;color:#333;text-align:center;white-space:nowrap;border-radius:9px;line-height:11px;font-size:11px;background:#dfdfdf !important}.td-ip-item span{display:inline-block;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;font-size:11px;font-weight:400}.td-ip-item a{display:inline-block;width:14px;float:right;font-size:14px}.remote-action-group{margin-bottom:3px;height:28px}.remote-action-group .btn-group-sm>.btn{margin:0;padding:6px 6px;font-size:12px;height:28px;min-width:80px}.remote-action-group .btn-group-sm>.btn.dropdown-toggle{min-width:0}.remote-action-group>li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc;font-size:12px}.remote-action-group>li.remote-action-state{text-align:center;white-space:nowrap}.remote-action-group>li.remote-action-state.state-disabled{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.remote-action-group>li.remote-action-state.state-disabled>i.fa{color:#b53a2f}.remote-action-group>li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.remote-action-group>li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.remote-info-group{margin-bottom:3px;height:28px}.remote-info-group ul{display:inline-block;height:28px;margin:0;padding:0}.remote-info-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.remote-info-group ul li.remote-action-btn{background:none;padding:0;border:none}.remote-info-group ul li.remote-action-input{background:none;padding:4px 0}.remote-info-group ul li.remote-action-input select{border:none}.remote-info-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.remote-info-group ul li select{margin-top:-3px}.remote-info-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.remote-info-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.rdp-options{position:absolute;display:none;left:10px;top:30px;border:1px solid rgba(0,0,0,0.25);z-index:9999;background-color:#fff;border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,0.2);font-size:13px}.rdp-options hr{margin:3px 0}.rdp-options .title{background-color:#eee;padding:3px 5px}.rdp-options .item{width:100%;padding:3px 20px}.rdp-options .item .radio,.rdp-options .item .checkbox{margin:0;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.rdp-options .item .center{text-align:center}body.page-header-fixed{padding-top:48px}body.page-sidebar-fixed .page-sidebar{position:fixed}body.page-sidebar-fixed .page-content{margin-left:180px}.page-header{border:none;box-shadow:0 0 3px rgba(0,0,0,0.5)}.page-header.navbar{overflow:hidden;min-height:48px;height:48px;margin:0}.page-header.navbar .brand{display:inline-block;float:left;width:180px;height:48px;padding:12px 0 0;text-align:center;margin:0 auto;background-color:#3a3a3a}.page-header.navbar .brand .logo{display:inline-block;width:93px;height:30px;background:url(../img/site-logo-small.png) no-repeat}.page-header.navbar .breadcrumb-container{display:inline-block;padding-top:6px}.page-header.navbar .breadcrumb-container .breadcrumb{background-color:transparent;padding-left:20px;font-size:16px}.page-header.navbar .breadcrumb-container .breadcrumb>li+li:before{content:"\f105";font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900}.page-header.navbar .breadcrumb-container .breadcrumb.breadcrumb-list>li{font-size:13px}.page-header.navbar .breadcrumb-container .breadcrumb.breadcrumb-list>li+li:before{content:" ";margin:0 5px}.page-header .container-fluid{padding-left:0}.page-sidebar{top:48px;bottom:0;left:0;width:180px;padding-top:0;z-index:1010;background-color:#3a3a3a}.page-sidebar .nav-menu>li>a{padding:8px 0 8px 20px;line-height:24px;font-size:13px;color:#c2c2c2;border-left:5px solid #3a3a3a}.page-sidebar .nav-menu>li>a:focus{background-color:#3a3a3a;border-left:5px solid #3a3a3a}.page-sidebar .nav-menu>li>a:hover{background-color:#2d2d2d;border-left:5px solid #005c74}.page-sidebar .nav-menu>li>a.selected{border-left:5px solid #00485b}.page-sidebar .nav-menu>li>a.selected:focus{border-left:5px solid #00485b}.page-sidebar .nav-menu>li>a.active{color:#fff;background-color:#0084a7;border-left:5px solid #0084a7}.page-sidebar .nav-menu>li>a.active:hover{border-left:5px solid #00acda}.page-sidebar .nav-menu>li>a.active:after{content:"\e251";font-family:'Glyphicons Halflings';position:relative;top:1px;display:inline-block;font-style:normal;font-weight:400;float:right;color:#e9e9e9;font-size:20px;line-height:24px;margin-right:-6px}.page-sidebar .nav-menu li .menu-caret:after{display:inline-block;width:12px;height:12px;margin-left:5px;top:1px;position:relative;border:none;font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900}.page-sidebar .nav-menu li .menu-caret:after{content:'\f105'}.page-sidebar .nav-menu li.expand .menu-caret:after{content:'\f107'}.page-sidebar .nav-menu>li>a>i.icon{float:left;margin-top:1px;margin-right:15px;text-align:center;line-height:24px;font-size:14px}.page-sidebar .sub-menu{padding:0;margin:0;background-color:#292929;position:relative;list-style-type:none;border-top:1px solid #202020;border-bottom:1px solid #464646}.page-sidebar .sub-menu>li>a{padding:8px 0 8px 40px;line-height:20px;font-size:13px;display:block;position:relative;color:#889097;border-left:5px solid #292929}.page-sidebar .sub-menu>li>a:before{display:inline-block;padding-right:8px;line-height:20px;content:"\f0da";font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900}.page-sidebar .sub-menu>li>a:hover{color:#fff;border-left:5px solid #005c74}.page-sidebar .sub-menu>li>a.active{color:#fff;background-color:#0084a7;border-left:5px solid #0084a7}.page-sidebar .sub-menu>li>a.active:hover{border-left:5px solid #00acda}.page-sidebar .sub-menu>li>a.active:after{content:"\e251";font-family:'Glyphicons Halflings';position:relative;top:-1px;display:inline-block;font-style:normal;font-weight:400;float:right;color:#e9e9e9;font-size:18px;line-height:24px;margin-right:-6px}.page-sidebar .nav-menu>li.profile{padding:10px 10px;color:#ccc;background-color:#333;border-bottom:1px solid #464646}.page-sidebar .nav-menu>li.profile a.title{color:#ccc}.page-sidebar .nav-menu>li.profile a.title:hover{color:#fff;background-color:transparent}.page-sidebar .nav-menu>li.profile a.title:focus{background-color:transparent}.page-sidebar .nav-menu>li.profile .image{float:left;margin-top:3px;font-size:24px;color:#69f;width:36px;height:36px;border-radius:6px;background-color:#eee;text-align:center;margin-right:10px;overflow:hidden}.page-sidebar .nav-menu>li.profile .image img{margin-top:-3px}.page-sidebar .nav-menu>li.profile .name{display:block;padding-top:3px;font-size:14px}.page-sidebar .nav-menu>li.profile .role{display:block;font-size:12px;color:#999}.page-sidebar .nav-menu>li.profile.active{background-color:#0084a7;color:#fff}.page-sidebar .nav-menu>li.profile.active .name,.page-sidebar .nav-menu>li.profile.active .role{color:#fff}.page-sidebar .nav-menu>li.profile.active:after{content:"\e251";font-family:'Glyphicons Halflings';position:absolute;top:0;right:-1px;display:inline-block;font-style:normal;font-weight:400;color:#e9e9e9;font-size:24px;line-height:61px;margin-right:-6px}.page-sidebar .nav-menu>li.profile .dropdown-menu{min-width:0;font-size:13px}.page-sidebar .nav-menu>li.profile .dropdown-menu>li>a{padding-right:30px}.page-sidebar .nav-menu>li.profile .dropdown-menu>li>a:hover{background-color:#ccc}.page-sidebar .nav-menu>li.profile .dropdown-menu .divider{margin:5px 0}.page-sidebar .badge{margin-top:-10px;margin-left:5px}.page-content-inner{padding:15px}.box{border:none;box-shadow:1px 1px 2px rgba(0,0,0,0.2);background-color:#fff;padding:15px;margin-bottom:15px}.box .nav-tabs{font-size:14px;font-weight:bold}.box .nav-tabs>li:first-child{margin-left:30px}.box .tab-content>.tab-pane{background-color:#fff;padding:20px;border:1px solid #ddd;border-top:none;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.box.box-nav-tabs{padding:0;background-color:#f5f5f5}.box.box-nav-tabs .nav-tabs{font-size:inherit;font-weight:inherit}.box.box-nav-tabs .nav-tabs>li{padding-top:8px}.box.box-nav-tabs .nav-tabs>li>a{margin-right:5px;border-top-left-radius:3px;border-top-right-radius:3px;padding:3px 15px;background-color:#e6e6e6;border:1px solid #ddd;border-bottom-color:transparent}.box.box-nav-tabs .nav-tabs>li.active>a{font-weight:bold;border:1px solid #ddd;border-bottom-color:transparent;background-color:#fff}.box.box-nav-tabs .tab-content>.tab-pane{padding:20px;border:none}.box-btn-bar{line-height:30px}.box-btn-bar a.btn{margin-right:20px}.page-filter{height:36px;line-height:36px;margin-bottom:10px}.page-filter .form-control{margin-top:5px;margin-right:4px}.form-group .input-group{margin-bottom:5px}.op_box{display:block;padding:5px;border-radius:3px;text-align:center;margin-top:5px}.op_error{background:#fbb}.op_wait{background:#ccc}.more-action{position:absolute !important}.more-action .dropdown-menu{background-color:rgba(60,60,60,0.9);color:#fff;font-size:13px}.more-action .dropdown-menu.dropdown-menu-left{margin-left:-120px}.more-action .dropdown-menu>li>a{padding:5px 20px;color:#fff}.more-action .dropdown-menu>li>a:hover,.more-action .dropdown-menu>li>a:active,.more-action .dropdown-menu>li>a:visited{background-color:#0084a7}.more-action .dropdown-menu .divider{margin:5px 0;background-color:#666}.popover-inline-edit input,.popover-inline-edit .btn{height:30px}.popover-inline-edit .popover-title{background-color:#ddd}.popover-inline-edit .popover-content{padding:20px 10px}.popover-inline-edit .popover{padding:0;max-width:500px}.popover-inline-edit .popover .popover-content{padding:10px 10px 20px 10px}.popover-inline-edit .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#ddd}.tp-table-filter{width:100%;height:25px;margin:0;padding:0}.tp-table-filter .tp-table-filter-inner{display:table;margin:0;padding:0}.tp-table-filter.tp-table-filter-input .tp-table-filter-inner{width:100%}.tp-table-filter.tp-table-filter-left .tp-table-filter-inner,.tp-table-filter.tp-table-filter-right .tp-table-filter-inner{width:auto}.tp-table-filter.tp-table-filter-center .tp-table-filter-inner{margin:0 auto}.tp-table-filter .search-title{display:table-cell;vertical-align:middle;height:25px;line-height:25px;color:#555;white-space:nowrap;width:1px;text-align:left}.tp-table-filter .search-input,.tp-table-filter .search-select{display:table-cell;text-align:left;height:25px}.tp-table-filter .search-input>.btn,.tp-table-filter .search-select>.btn{font-size:13px;background-color:transparent;border:none;padding:0 0 0 8px;border-radius:0}.tp-table-filter .search-input>.btn:active,.tp-table-filter .search-select>.btn:active{box-shadow:none}.tp-table-filter .search-input .dropdown-menu,.tp-table-filter .search-select .dropdown-menu{min-width:0;background-color:rgba(0,0,0,0.8);color:#fff;font-size:13px;box-shadow:0 3px 6px rgba(0,0,0,0.3);border:none}.tp-table-filter .search-input .dropdown-menu>li>a,.tp-table-filter .search-select .dropdown-menu>li>a{padding-right:30px;min-width:100px;color:#fff}.tp-table-filter .search-input .dropdown-menu>li>a:hover,.tp-table-filter .search-select .dropdown-menu>li>a:hover,.tp-table-filter .search-input .dropdown-menu>li>a:active,.tp-table-filter .search-select .dropdown-menu>li>a:active,.tp-table-filter .search-input .dropdown-menu>li>a:visited,.tp-table-filter .search-select .dropdown-menu>li>a:visited{background-color:rgba(255,255,255,0.2)}.tp-table-filter .search-input .dropdown-menu .divider,.tp-table-filter .search-select .dropdown-menu .divider{margin:5px 0;background-color:#666}.tp-table-filter .search-input{width:100%;padding-left:10px}.tp-table-filter .search-input>.input-group .input-group-addon{font-size:13px;padding:0 5px}.tp-table-filter .search-input>.input-group input.form-control{font-size:13px;height:25px;width:100%;padding:0 5px}.btn.btn-no-border{font-size:13px;background-color:transparent;border:none;padding:0 0 0 8px;border-radius:0}.btn.btn-no-border:active{box-shadow:none}.table>tbody>tr.table-footer-action{background-color:transparent}.table>tbody>tr.table-footer-action>td{border-color:transparent;padding-top:15px;vertical-align:middle}.table-extend-area,.table-prefix-area{display:table;width:100%}.table-extend-area .table-extend-cell,.table-prefix-area .table-extend-cell{display:table-cell;height:24px;line-height:24px;padding:3px}.table-extend-area .table-extend-cell.table-extend-cell-right,.table-prefix-area .table-extend-cell.table-extend-cell-right{text-align:right}.table-extend-area .table-extend-cell .table-name,.table-prefix-area .table-extend-cell .table-name{font-size:120%;position:relative;top:3px;padding-right:10px}.table-extend-area .table-extend-cell .pagination,.table-prefix-area .table-extend-cell .pagination{margin:0 0}.table-extend-area .table-extend-cell .pagination>li>span,.table-prefix-area .table-extend-cell .pagination>li>span,.table-extend-area .table-extend-cell .pagination a,.table-prefix-area .table-extend-cell .pagination a{padding:3px 8px;font-size:12px;line-height:1.5}.table-extend-area .table-extend-cell.checkbox-select-all,.table-prefix-area .table-extend-cell.checkbox-select-all{width:36px;text-align:center}.table-extend-area .table-extend-cell.checkbox-select-all input,.table-prefix-area .table-extend-cell.checkbox-select-all input{position:relative;top:3px}.table-extend-area .table-extend-cell.group-actions>.btn-group .btn,.table-prefix-area .table-extend-cell.group-actions>.btn-group .btn{padding:5px 5px;font-size:12px}.table-extend-area .table-extend-cell.table-item-counter,.table-prefix-area .table-extend-cell.table-item-counter{text-align:right}.table-extend-area .table-extend-cell.table-item-counter ol,.table-prefix-area .table-extend-cell.table-item-counter ol{list-style:none;padding:0;margin:0;border:none;background-color:transparent;color:#666}.table-extend-area .table-extend-cell.table-item-counter ol>li,.table-prefix-area .table-extend-cell.table-item-counter ol>li{display:inline-block;padding-left:10px}.table-extend-area .table-extend-cell.table-item-counter .btn,.table-prefix-area .table-extend-cell.table-item-counter .btn{margin-top:-3px}.table-extend-area .table-extend-cell.table-item-counter .btn .caret,.table-prefix-area .table-extend-cell.table-item-counter .btn .caret{margin-top:-3px}.table-prefix-area{margin-bottom:10px}.table-prefix-area .table-extend-cell{padding:0}.btn-group.pagination .btn.dropdown-toggle{background-color:transparent;border:1px solid #999}textarea.textarea-resize-y{resize:vertical}textarea.textarea-resize-none{resize:none}textarea.textarea-code{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}textarea.cert_pub{width:100%;height:64px;border:1px solid #e2e2e2;background-color:#e4ffe5}.box ul.help-list{list-style:none;margin:0 0 10px 0;padding:0}.box ul.help-list li{padding:3px 3px 3px 20px;margin-left:10px}.box ul.help-list li:before{color:#999;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f05a";font-family:'Font Awesome 5 Free';font-weight:900}.box ul.help-list li em{color:#3374b0;font-style:normal}.tp-checkbox{display:inline-block;color:#747474}.tp-checkbox.tp-disabled{cursor:not-allowed;color:#c2c2c2}.tp-checkbox:before{display:inline-block;position:relative;top:1px;width:16px;content:"\f0c8";font-family:'Font Awesome 5 Free';font-weight:400}.tp-checkbox.tp-selected:before,.tp-checkbox.tp-checked:before{content:"\f14a";font-family:'Font Awesome 5 Free';font-weight:400}.tp-checkbox.tp-editable{cursor:pointer;color:#459dee}.tp-checkbox.tp-editable:hover{color:#53af43}.tp-checkbox.tp-editable.tp-selected,.tp-checkbox.tp-editable.tp-checked{color:#3374b0}i.upload-button{font-size:128px;color:#b1b1b1}i.upload-button:hover{cursor:pointer;color:#709cff}.assist-config .cfg-title{font-size:16px;font-weight:bold}.assist-config .form-group{margin-bottom:5px}.assist-config .col-sm-1,.assist-config .col-sm-2,.assist-config .col-sm-3,.assist-config .col-sm-4,.assist-config .col-sm-5,.assist-config .col-sm-6,.assist-config .col-sm-7,.assist-config .col-sm-8,.assist-config .col-sm-9,.assist-config .col-sm-10,.assist-config .col-sm-11{padding-left:3px;padding-right:3px}.assist-config .arg-detail ol,.assist-config .arg-detail ul{margin-bottom:0}.assist-config .arg-detail-common{background-color:#edfedf;border-radius:5px;padding:15px}.assist-config select,.assist-config .input-args{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.assist-config .desc{margin-top:5px;color:#6b6b6b}.assist-config .arg-varb{color:#393939;font-weight:bold;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;display:inline-block;width:180px}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:'Font Awesome 5 Free' !important;font-weight:900 !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}/*# sourceMappingURL=style.css.map */
\ No newline at end of file
+@charset "utf-8";html{font-size:13px}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;background-color:#e9e9e9;color:#333}html,body{height:100%}a{text-decoration:none}a:link{text-decoration:none}a:hover{text-decoration:none}a:active{text-decoration:none}a:visited{text-decoration:none}select{outline:none}label{font-weight:normal}hr.hr-sm{padding:1px 0;margin:5px 0;border-top:1px dashed #c4c4c4}hr.small{margin:5px 0}ul{list-style:none}ul.list{margin:0;padding:3px 0 5px 0}ul.list li{margin:3px 3px 5px 10px}button:focus{outline:none}.clear-float{clear:both}.bigger{font-size:120%}.normal-text{font-size:13px;color:#333}.mono{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.important{color:#d45f1c}.error{color:#d34242}.bold{font-weight:bold}.btn-single-line{white-space:nowrap}.btn-single-line .btn:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.btn-single-line .btn:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dlg-protocol-group{margin-bottom:3px}.dlg-protocol-group ul{display:block;height:28px;margin:0;padding:0}.dlg-protocol-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.dlg-protocol-group ul li.item-name{width:120px}.dlg-protocol-group ul li.item-btn{background:none;padding:0;border:none}.dlg-protocol-group ul li.item-input{background:none;border:none;padding:0}.dlg-protocol-group ul li .form-control{line-height:1.5;margin:0;padding:4px 5px;font-size:12px;height:28px;border-radius:0;border-left:none;width:100px}.dlg-protocol-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.dlg-protocol-group ul li input[type=checkbox]{display:block;float:left;margin:3px 5px 0 0}.dlg-protocol-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:first-child .btn,.dlg-protocol-group ul li:first-child .form-control{border-top-left-radius:4px;border-bottom-left-radius:4px}.dlg-protocol-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.dlg-protocol-group ul li:last-child .btn,.dlg-protocol-group ul li:last-child .form-control{border-top-right-radius:4px;border-bottom-right-radius:4px}.os-icon-windows:after{content:"\f17a";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-linux:after{content:"\f17c";color:#fff;background-color:#333;font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-macos:after{content:"\f179";font-style:normal;text-align:center;width:1.25em;height:1.25em;line-height:1.25em;border-radius:50%;display:inline-block;font-family:"Font Awesome 5 Brands";font-weight:400}.os-icon-ubuntu:after,.os-icon-debian:after,.os-icon-centos:after,.os-icon-redhat:after{content:" ";width:24px;height:24px;line-height:24px;display:inline-block}.os-icon-ubuntu:after{background:url(../img/os-icon/ubuntu-24x24.png) no-repeat}.os-icon-debian:after{background:url(../img/os-icon/debian-24x24.png) no-repeat}.os-icon-centos:after{background:url(../img/os-icon/centos-24x24.png) no-repeat}.os-icon-redhat:after{background:url(../img/os-icon/redhat-24x24.png) no-repeat}.disable-bg{position:absolute;background:url(../img/css/disable-bg.png) repeat;opacity:.45;z-index:990}.disable-message{display:inline-block;font-size:160%;position:absolute;padding:20px 40px;border:1px solid #2b0002;background-color:#65181a;color:#fff;opacity:.85;z-index:991}.center{text-align:center}#page-container{min-width:1260px}.btn-group-sm>.btn{padding:3px 5px;font-size:12px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:none}.pop-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040}.form-group{margin-bottom:5px}.badge{padding:3px 6px;border-radius:10px;font-size:13px;font-weight:400;background-color:#999}.badge.badge-sm{font-size:12px;padding:3px 5px;margin-top:0;border-radius:8px;text-shadow:none}.badge.badge-sup{margin-left:-8px;margin-top:-16px}.badge.badge-ignore{background-color:#e5e5e5;color:#999}.badge.badge-info{background-color:#33b7d0}.badge.badge-primary{background-color:#348fe2}.badge.badge-success{background-color:#368142}.badge.badge-warning{background-color:#f57523}.badge.badge-danger{background-color:#d34242}.btn-success .badge{color:#fff}.label{display:inline-block;padding:5px 10px;margin:2px;font-size:13px;font-weight:400;background-color:#999}.label.label-sm{font-size:12px;padding:3px 8px 4px 8px;margin-top:0;border-radius:3px}.label.label-ignore{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.label.label-info{background-color:#33b7d0}.label.label-primary{background-color:#348fe2}.label.label-success{background-color:#368142}.label.label-warning{background-color:#f57523}.label.label-danger{background-color:#d34242}.progress.progress-sm{height:18px;margin-bottom:2px;background-color:#aaa}.progress.progress-sm.button{cursor:pointer}.progress.progress-sm .progress-bar{display:block;font-size:11px;float:none}.modal-dialog .modal-content .modal-header{background-color:#f7f7f7}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{padding-right:5px;padding-left:5px}.input-group :-moz-placeholder{color:#d2d2d2}.input-group ::-moz-placeholder{color:#d2d2d2}.input-group input:-ms-input-placeholder,.input-group textarea:-ms-input-placeholder{color:#d2d2d2}.input-group input::-webkit-input-placeholder,.input-group textarea::-webkit-input-placeholder{color:#d2d2d2}.modal .modal-content{border-radius:0}.modal .modal-header .close{margin-top:-4px;margin-right:-6px}.modal .modal-header .close:hover{color:#9c3023;opacity:1}.modal .modal-header .close:active,.modal .modal-header .close:focus,.modal .modal-header .close:visited{-webkit-appearance:none}.modal .form-horizontal .form-group,.modal .row{margin-left:0;margin-right:0;padding-bottom:8px}.alert{border-radius:0;padding:5px;margin-bottom:10px}.dropdown-menu{min-width:0;font-size:13px}.form-control-sm{padding:3px 5px;font-size:13px;height:inherit}.form-group .control-label.require{color:#505050;font-weight:bold}.form-group .control-label.require:before{color:#ac4e43;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f069";font-size:8px;font-family:'Font Awesome 5 Free';font-weight:900}.form-group .control-desc{padding-top:6px;color:#999}.form-group .control-desc-sm{color:#999;padding-top:3px;font-size:12px}label.form-control-static input{display:inline-block;position:relative;margin-top:4px}.control-desc .popover{max-width:none;font-size:13px}.table-extend-cell .btn-group-sm .btn,.table-prefix-area .btn-group-sm .btn{padding:5px 5px}.table.table-role .header{font-size:120%;margin-top:8px}.table.table-role td{text-align:left;vertical-align:top;padding:0}.table.table-role td.role-name{min-width:160px}.table.table-role td.role-name ul{list-style:none;margin:0;padding:0}.table.table-role td.role-name ul li{padding:8px 30px 8px 6px;white-space:nowrap}.table.table-role td.role-name ul li:first-child{margin-top:10px}.table.table-role td.role-name ul li.active{color:#fff;background-color:#4091dd}.table.table-role td.role-name ul li.active:hover{background-color:#4091dd;cursor:auto}.table.table-role td.role-name ul li:hover{background-color:#81b6e9;cursor:pointer}.table.table-role td.role-privilege{padding:0 0 10px 10px;border-left:3px solid #4091dd}.table.table-role td.role-privilege hr{margin:8px 0;border-bottom:1px solid rgba(255,255,255,0.3)}.table.table-role td.role-privilege .title{font-size:110%;margin:5px 0}.table.table-role td.role-privilege ul{list-style:none;margin:0;padding:0}.table.table-role td.role-privilege ul li{display:inline-block;width:180px;margin-bottom:5px;margin-left:10px}.table.table-role td.role-privilege ul li span{color:#8e8e8e}.table.table-role td.role-privilege ul li span:before{display:inline-block;width:16px;content:"\f0c8";font-family:'Font Awesome 5 Free';font-weight:400}.table.table-role td.role-privilege ul li span.enabled{color:#3374b0}.table.table-role td.role-privilege ul li span.enabled:before{content:"\f14a";font-family:'Font Awesome 5 Free';font-weight:400}.table.table-role td.role-privilege.editable li span{cursor:pointer}.table.table-role tr:first-child td{border-top:none}#btn-create-role{margin-top:15px}.table{margin-bottom:10px}.table>thead>tr>th{vertical-align:middle;border-bottom:2px solid #ddd}.table.table-info-list{width:auto}.table.table-info-list td{border-top:1px dotted #ddd;padding:5px 5px;vertical-align:top}.table.table-info-list td.key{text-align:right;width:1px;white-space:nowrap}.table.table-info-list td.value{text-align:left;font-weight:bold;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;color:#3e3e3e}.table.table-info-list td .error{color:#cc3632;font-weight:bold}.table.table-info-list td .disabled{color:#848484}.table.table-info-list.table-info-list-lite{width:100%}.table.table-info-list.table-info-list-lite td{padding:5px 5px}.table.table-info-list.table-info-list-lite td.value{font-weight:normal}.table.table-info-list tr:first-child td{border-top:none}.table.table-config-list{width:100%}.table.table-config-list td{border:none;padding:5px}.table.table-config-list td.title{text-align:left;font-size:110%;font-weight:bolder}.table.table-config-list td.key{width:1px;white-space:nowrap;text-align:right;padding-right:15px}.table.table-config-list td.value{text-align:left}.table.table-config-list td.value input{width:4em;padding:0 5px;text-align:right}.table.table-config-list td.value .unit{margin-left:5px}.table.table-config-list td.value .desc{color:#999;margin-left:15px;display:inline-block}.table>thead>tr>th{padding:5px 5px;outline:none;white-space:nowrap;font-weight:normal;text-align:center;background-color:#ededed}.table>tbody>tr>td{padding:5px;text-align:center;vertical-align:middle}.table>tbody>tr>td .nowrap{white-space:nowrap}.table-data td.loading{text-align:left;padding:20px}.table-data .btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.table.table-data thead .sorting,.table.table-data thead .sorting_asc,.table.table-data thead .sorting_desc{cursor:pointer}.table.table-data thead .sorting:after,.table.table-data thead .sorting_asc:after,.table.table-data thead .sorting_desc:after{bottom:4px;padding-left:5px;display:inline-block;font-family:'Font Awesome 5 Free';font-weight:900;opacity:.8}.table.table-data thead .sorting:after{opacity:.2;content:"\f0dc"}.table.table-data thead .sorting_asc:after{content:"\f0de"}.table.table-data thead .sorting_desc:after{content:"\f0dd"}.host-name{font-size:16px}.host-name-desc{cursor:pointer}.host-ip{font-size:12px;color:#999;display:inline-block;white-space:nowrap;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;overflow:hidden;text-overflow:ellipsis}.td-ip-list{padding-right:20px;padding-left:5px}.td-ip-show-more{font-size:14px;width:12px;float:right;display:block}.td-ip-item{min-width:12em;width:12em;height:18px;padding:2px 4px;margin:1px 0;color:#333;text-align:center;white-space:nowrap;border-radius:9px;line-height:11px;font-size:11px;background:#dfdfdf !important}.td-ip-item span{display:inline-block;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;font-size:11px;font-weight:400}.td-ip-item a{display:inline-block;width:14px;float:right;font-size:14px}.remote-action-group{margin-bottom:3px;height:28px}.remote-action-group .btn-group-sm>.btn{margin:0;padding:6px 6px;font-size:12px;height:28px;min-width:80px}.remote-action-group .btn-group-sm>.btn.dropdown-toggle{min-width:0}.remote-action-group>li{float:left;position:relative;display:block;height:28px;padding:4px 5px;background-color:#eee;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc;font-size:12px}.remote-action-group>li.remote-action-state{text-align:center;white-space:nowrap}.remote-action-group>li.remote-action-state.state-disabled{background-color:#e5e5e5;color:#aaa;text-shadow:-1px -1px 1px #fff}.remote-action-group>li.remote-action-state.state-disabled>i.fa{color:#b53a2f}.remote-action-group>li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.remote-action-group>li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.remote-info-group{margin-bottom:3px;height:28px}.remote-info-group ul{display:inline-block;height:28px;margin:0;padding:0}.remote-info-group ul li{float:left;position:relative;display:block;height:28px;padding:4px 5px;border-top:1px solid #ccc;border-right:1px solid #ccc;border-bottom:1px solid #ccc}.remote-info-group ul li.remote-action-btn{background:none;padding:0;border:none}.remote-info-group ul li.remote-action-input{background:none;padding:4px 0}.remote-info-group ul li.remote-action-input select{border:none}.remote-info-group ul li label{padding:0;display:block;float:left;margin-top:1px;cursor:pointer}.remote-info-group ul li select{margin-top:-3px}.remote-info-group ul li:first-child{border-left:1px solid #ccc;border-top-left-radius:4px;border-bottom-left-radius:4px}.remote-info-group ul li:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.rdp-options{position:absolute;display:none;left:10px;top:30px;border:1px solid rgba(0,0,0,0.25);z-index:9999;background-color:#fff;border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,0.2);font-size:13px}.rdp-options hr{margin:3px 0}.rdp-options .title{background-color:#eee;padding:3px 5px}.rdp-options .item{width:100%;padding:3px 20px}.rdp-options .item .radio,.rdp-options .item .checkbox{margin:0;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.rdp-options .item .center{text-align:center}body.page-header-fixed{padding-top:48px}body.page-sidebar-fixed .page-sidebar{position:fixed}body.page-sidebar-fixed .page-content{margin-left:180px}.page-header{border:none;box-shadow:0 0 3px rgba(0,0,0,0.5)}.page-header.navbar{overflow:hidden;min-height:48px;height:48px;margin:0}.page-header.navbar .brand{display:inline-block;float:left;width:180px;height:48px;padding:12px 0 0;text-align:center;margin:0 auto;background-color:#3a3a3a}.page-header.navbar .brand .logo{display:inline-block;width:93px;height:30px;background:url(../img/site-logo-small.png) no-repeat}.page-header.navbar .breadcrumb-container{display:inline-block;padding-top:6px}.page-header.navbar .breadcrumb-container .breadcrumb{background-color:transparent;padding-left:20px;font-size:16px}.page-header.navbar .breadcrumb-container .breadcrumb>li+li:before{content:"\f105";font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900}.page-header.navbar .breadcrumb-container .breadcrumb.breadcrumb-list>li{font-size:13px}.page-header.navbar .breadcrumb-container .breadcrumb.breadcrumb-list>li+li:before{content:" ";margin:0 5px}.page-header .container-fluid{padding-left:0}.page-sidebar{top:48px;bottom:0;left:0;width:180px;padding-top:0;z-index:1010;background-color:#3a3a3a}.page-sidebar .nav-menu>li>a{padding:8px 0 8px 20px;line-height:24px;font-size:13px;color:#c2c2c2;border-left:5px solid #3a3a3a}.page-sidebar .nav-menu>li>a:focus{background-color:#3a3a3a;border-left:5px solid #3a3a3a}.page-sidebar .nav-menu>li>a:hover{background-color:#2d2d2d;border-left:5px solid #005c74}.page-sidebar .nav-menu>li>a.selected{border-left:5px solid #00485b}.page-sidebar .nav-menu>li>a.selected:focus{border-left:5px solid #00485b}.page-sidebar .nav-menu>li>a.active{color:#fff;background-color:#0084a7;border-left:5px solid #0084a7}.page-sidebar .nav-menu>li>a.active:hover{border-left:5px solid #00acda}.page-sidebar .nav-menu>li>a.active:after{content:"\e251";font-family:'Glyphicons Halflings';position:relative;top:1px;display:inline-block;font-style:normal;font-weight:400;float:right;color:#e9e9e9;font-size:20px;line-height:24px;margin-right:-6px}.page-sidebar .nav-menu li .menu-caret:after{display:inline-block;width:12px;height:12px;margin-left:5px;top:1px;position:relative;border:none;font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900}.page-sidebar .nav-menu li .menu-caret:after{content:'\f105'}.page-sidebar .nav-menu li.expand .menu-caret:after{content:'\f107'}.page-sidebar .nav-menu>li>a>i.icon{float:left;margin-top:1px;margin-right:15px;text-align:center;line-height:24px;font-size:14px}.page-sidebar .sub-menu{padding:0;margin:0;background-color:#292929;position:relative;list-style-type:none;border-top:1px solid #202020;border-bottom:1px solid #464646}.page-sidebar .sub-menu>li>a{padding:8px 0 8px 40px;line-height:20px;font-size:13px;display:block;position:relative;color:#889097;border-left:5px solid #292929}.page-sidebar .sub-menu>li>a:before{display:inline-block;padding-right:8px;line-height:20px;content:"\f0da";font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900}.page-sidebar .sub-menu>li>a:hover{color:#fff;border-left:5px solid #005c74}.page-sidebar .sub-menu>li>a.active{color:#fff;background-color:#0084a7;border-left:5px solid #0084a7}.page-sidebar .sub-menu>li>a.active:hover{border-left:5px solid #00acda}.page-sidebar .sub-menu>li>a.active:after{content:"\e251";font-family:'Glyphicons Halflings';position:relative;top:-1px;display:inline-block;font-style:normal;font-weight:400;float:right;color:#e9e9e9;font-size:18px;line-height:24px;margin-right:-6px}.page-sidebar .nav-menu>li.profile{padding:10px 10px;color:#ccc;background-color:#333;border-bottom:1px solid #464646}.page-sidebar .nav-menu>li.profile a.title{color:#ccc}.page-sidebar .nav-menu>li.profile a.title:hover{color:#fff;background-color:transparent}.page-sidebar .nav-menu>li.profile a.title:focus{background-color:transparent}.page-sidebar .nav-menu>li.profile .image{float:left;margin-top:3px;font-size:24px;color:#69f;width:36px;height:36px;border-radius:6px;background-color:#eee;text-align:center;margin-right:10px;overflow:hidden}.page-sidebar .nav-menu>li.profile .image img{margin-top:-3px}.page-sidebar .nav-menu>li.profile .name{display:block;padding-top:3px;font-size:14px}.page-sidebar .nav-menu>li.profile .role{display:block;font-size:12px;color:#999}.page-sidebar .nav-menu>li.profile.active{background-color:#0084a7;color:#fff}.page-sidebar .nav-menu>li.profile.active .name,.page-sidebar .nav-menu>li.profile.active .role{color:#fff}.page-sidebar .nav-menu>li.profile.active:after{content:"\e251";font-family:'Glyphicons Halflings';position:absolute;top:0;right:-1px;display:inline-block;font-style:normal;font-weight:400;color:#e9e9e9;font-size:24px;line-height:61px;margin-right:-6px}.page-sidebar .nav-menu>li.profile .dropdown-menu{min-width:0;font-size:13px}.page-sidebar .nav-menu>li.profile .dropdown-menu>li>a{padding-right:30px}.page-sidebar .nav-menu>li.profile .dropdown-menu>li>a:hover{background-color:#ccc}.page-sidebar .nav-menu>li.profile .dropdown-menu .divider{margin:5px 0}.page-sidebar .badge{margin-top:-10px;margin-left:5px}.page-content-inner{padding:15px}.box{border:none;box-shadow:1px 1px 2px rgba(0,0,0,0.2);background-color:#fff;padding:15px;margin-bottom:15px}.box .nav-tabs{font-size:14px;font-weight:bold}.box .nav-tabs>li:first-child{margin-left:30px}.box .tab-content>.tab-pane{background-color:#fff;padding:20px;border:1px solid #ddd;border-top:none;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.box.box-nav-tabs{padding:0;background-color:#f5f5f5}.box.box-nav-tabs .nav-tabs{font-size:inherit;font-weight:inherit}.box.box-nav-tabs .nav-tabs>li{padding-top:8px}.box.box-nav-tabs .nav-tabs>li>a{margin-right:5px;border-top-left-radius:3px;border-top-right-radius:3px;padding:3px 15px;background-color:#e6e6e6;border:1px solid #ddd;border-bottom-color:transparent}.box.box-nav-tabs .nav-tabs>li.active>a{font-weight:bold;border:1px solid #ddd;border-bottom-color:transparent;background-color:#fff}.box.box-nav-tabs .tab-content>.tab-pane{padding:20px;border:none}.box-btn-bar{line-height:30px}.box-btn-bar a.btn{margin-right:20px}.page-filter{height:36px;line-height:36px;margin-bottom:10px}.page-filter .form-control{margin-top:5px;margin-right:4px}.form-group .input-group{margin-bottom:5px}.op_box{display:block;padding:5px;border-radius:3px;text-align:center;margin-top:5px}.op_error{background:#fbb}.op_wait{background:#ccc}.more-action{position:absolute !important}.more-action .dropdown-menu{background-color:rgba(60,60,60,0.9);color:#fff;font-size:13px}.more-action .dropdown-menu.dropdown-menu-left{margin-left:-120px}.more-action .dropdown-menu>li>a{padding:5px 20px;color:#fff}.more-action .dropdown-menu>li>a:hover,.more-action .dropdown-menu>li>a:active,.more-action .dropdown-menu>li>a:visited{background-color:#0084a7}.more-action .dropdown-menu .divider{margin:5px 0;background-color:#666}.popover-inline-edit input,.popover-inline-edit .btn{height:30px}.popover-inline-edit .popover-title{background-color:#ddd}.popover-inline-edit .popover-content{padding:20px 10px}.popover-inline-edit .popover{padding:0;max-width:500px}.popover-inline-edit .popover .popover-content{padding:10px 10px 20px 10px}.popover-inline-edit .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#ddd}.tp-table-filter{width:100%;height:25px;margin:0;padding:0}.tp-table-filter .tp-table-filter-inner{display:table;margin:0;padding:0}.tp-table-filter.tp-table-filter-input .tp-table-filter-inner{width:100%}.tp-table-filter.tp-table-filter-left .tp-table-filter-inner,.tp-table-filter.tp-table-filter-right .tp-table-filter-inner{width:auto}.tp-table-filter.tp-table-filter-center .tp-table-filter-inner{margin:0 auto}.tp-table-filter .search-title{display:table-cell;vertical-align:middle;height:25px;line-height:25px;color:#555;white-space:nowrap;width:1px;text-align:left}.tp-table-filter .search-input,.tp-table-filter .search-select{display:table-cell;text-align:left;height:25px}.tp-table-filter .search-input>.btn,.tp-table-filter .search-select>.btn{font-size:13px;background-color:transparent;border:none;padding:0 0 0 8px;border-radius:0}.tp-table-filter .search-input>.btn:active,.tp-table-filter .search-select>.btn:active{box-shadow:none}.tp-table-filter .search-input .dropdown-menu,.tp-table-filter .search-select .dropdown-menu{min-width:0;background-color:rgba(0,0,0,0.8);color:#fff;font-size:13px;box-shadow:0 3px 6px rgba(0,0,0,0.3);border:none}.tp-table-filter .search-input .dropdown-menu>li>a,.tp-table-filter .search-select .dropdown-menu>li>a{padding-right:30px;min-width:100px;color:#fff}.tp-table-filter .search-input .dropdown-menu>li>a:hover,.tp-table-filter .search-select .dropdown-menu>li>a:hover,.tp-table-filter .search-input .dropdown-menu>li>a:active,.tp-table-filter .search-select .dropdown-menu>li>a:active,.tp-table-filter .search-input .dropdown-menu>li>a:visited,.tp-table-filter .search-select .dropdown-menu>li>a:visited{background-color:rgba(255,255,255,0.2)}.tp-table-filter .search-input .dropdown-menu .divider,.tp-table-filter .search-select .dropdown-menu .divider{margin:5px 0;background-color:#666}.tp-table-filter .search-input{width:100%;padding-left:10px}.tp-table-filter .search-input>.input-group .input-group-addon{font-size:13px;padding:0 5px}.tp-table-filter .search-input>.input-group input.form-control{font-size:13px;height:25px;width:100%;padding:0 5px}.btn.btn-no-border{font-size:13px;background-color:transparent;border:none;padding:0 0 0 8px;border-radius:0}.btn.btn-no-border:active{box-shadow:none}.table>tbody>tr.table-footer-action{background-color:transparent}.table>tbody>tr.table-footer-action>td{border-color:transparent;padding-top:15px;vertical-align:middle}.table-extend-area,.table-prefix-area{display:table;width:100%}.table-extend-area .table-extend-cell,.table-prefix-area .table-extend-cell{display:table-cell;height:24px;line-height:24px;padding:3px}.table-extend-area .table-extend-cell.table-extend-cell-right,.table-prefix-area .table-extend-cell.table-extend-cell-right{text-align:right}.table-extend-area .table-extend-cell .table-name,.table-prefix-area .table-extend-cell .table-name{font-size:120%;position:relative;top:3px;padding-right:10px}.table-extend-area .table-extend-cell .pagination,.table-prefix-area .table-extend-cell .pagination{margin:0 0}.table-extend-area .table-extend-cell .pagination>li>span,.table-prefix-area .table-extend-cell .pagination>li>span,.table-extend-area .table-extend-cell .pagination a,.table-prefix-area .table-extend-cell .pagination a{padding:3px 8px;font-size:12px;line-height:1.5}.table-extend-area .table-extend-cell.checkbox-select-all,.table-prefix-area .table-extend-cell.checkbox-select-all{width:36px;text-align:center}.table-extend-area .table-extend-cell.checkbox-select-all input,.table-prefix-area .table-extend-cell.checkbox-select-all input{position:relative;top:3px}.table-extend-area .table-extend-cell.group-actions>.btn-group .btn,.table-prefix-area .table-extend-cell.group-actions>.btn-group .btn{padding:5px 5px;font-size:12px}.table-extend-area .table-extend-cell.table-item-counter,.table-prefix-area .table-extend-cell.table-item-counter{text-align:right}.table-extend-area .table-extend-cell.table-item-counter ol,.table-prefix-area .table-extend-cell.table-item-counter ol{list-style:none;padding:0;margin:0;border:none;background-color:transparent;color:#666}.table-extend-area .table-extend-cell.table-item-counter ol>li,.table-prefix-area .table-extend-cell.table-item-counter ol>li{display:inline-block;padding-left:10px}.table-extend-area .table-extend-cell.table-item-counter .btn,.table-prefix-area .table-extend-cell.table-item-counter .btn{margin-top:-3px}.table-extend-area .table-extend-cell.table-item-counter .btn .caret,.table-prefix-area .table-extend-cell.table-item-counter .btn .caret{margin-top:-3px}.table-prefix-area{margin-bottom:10px}.table-prefix-area .table-extend-cell{padding:0}.btn-group.pagination .btn.dropdown-toggle{background-color:transparent;border:1px solid #999}textarea.textarea-resize-y{resize:vertical}textarea.textarea-resize-none{resize:none}textarea.textarea-code{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}textarea.cert_pub{width:100%;height:64px;border:1px solid #e2e2e2;background-color:#e4ffe5}.box ul.help-list{list-style:none;margin:0 0 10px 0;padding:0}.box ul.help-list li{padding:3px 3px 3px 20px;margin-left:10px}.box ul.help-list li:before{color:#999;position:absolute;margin-left:-1.2em;margin-top:1px;content:"\f05a";font-family:'Font Awesome 5 Free';font-weight:900}.box ul.help-list li em{color:#3374b0;font-style:normal}.tp-checkbox{display:inline-block;color:#747474}.tp-checkbox.tp-disabled{cursor:not-allowed;color:#c2c2c2}.tp-checkbox:before{display:inline-block;position:relative;top:1px;width:16px;content:"\f0c8";font-family:'Font Awesome 5 Free';font-weight:400}.tp-checkbox.tp-selected:before,.tp-checkbox.tp-checked:before{content:"\f14a";font-family:'Font Awesome 5 Free';font-weight:400}.tp-checkbox.tp-editable{cursor:pointer;color:#459dee}.tp-checkbox.tp-editable:hover{color:#53af43}.tp-checkbox.tp-editable.tp-selected,.tp-checkbox.tp-editable.tp-checked{color:#3374b0}i.upload-button{font-size:128px;color:#b1b1b1}i.upload-button:hover{cursor:pointer;color:#709cff}.assist-config .cfg-title{font-size:16px;font-weight:bold}.assist-config .form-group{margin-bottom:5px}.assist-config .col-sm-1,.assist-config .col-sm-2,.assist-config .col-sm-3,.assist-config .col-sm-4,.assist-config .col-sm-5,.assist-config .col-sm-6,.assist-config .col-sm-7,.assist-config .col-sm-8,.assist-config .col-sm-9,.assist-config .col-sm-10,.assist-config .col-sm-11{padding-left:3px;padding-right:3px}.assist-config .arg-detail ol,.assist-config .arg-detail ul{margin-bottom:0}.assist-config .arg-detail-common{background-color:#edfedf;border-radius:5px;padding:15px}.assist-config select,.assist-config .input-args{font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace}.assist-config .desc{margin-top:5px;color:#6b6b6b}.assist-config .arg-varb{color:#393939;font-weight:bold;font-family:Monaco,Lucida Console,Consolas,Courier,'Courier New',monospace;display:inline-block;width:180px}#gritter-notice-wrapper{z-index:9999}.gritter-bottom,.gritter-item,.gritter-top{background:rgba(0,0,0,0.8) !important}.gritter-top{border-top-left-radius:3px;border-top-right-radius:3px}.gritter-bottom{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.gritter-close,.gritter-light .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%}.gritter-close:before,.gritter-light .gritter-close:before{content:'\f00d' !important;font-family:'Font Awesome 5 Free' !important;font-weight:900 !important;font-size:9px !important;width:16px !important;height:16px !important;line-height:16px !important;color:#fff !important;text-indent:0 !important;position:absolute !important;text-align:center !important;right:0 !important;top:0 !important}.gritter-title{font-size:13px !important;line-height:16px !important;padding-bottom:5px !important;font-weight:400 !important;color:#fff !important;text-shadow:none !important}.gritter-item{color:#aaa !important;font-size:13px !important;padding:2px 15px 5px !important}.gritter-error .gritter-bottom,.gritter-error .gritter-item,.gritter-error .gritter-top{background:rgba(123,32,32,0.9) !important}.gritter-error .gritter-title{color:#fff !important}.gritter-error .gritter-item{color:#ddd !important}.gritter-error .gritter-close{left:auto !important;right:5px !important;top:5px !important;width:16px !important;height:16px !important;line-height:16px !important;display:block !important;border-radius:50%;background:#e33b3b !important}.gritter-success .gritter-bottom,.gritter-success .gritter-item,.gritter-success .gritter-top{background:rgba(1,65,16,0.9) !important}.gritter-success .gritter-title{color:#ddd !important}.gritter-success .gritter-item{color:#ccc !important}.gritter-success .gritter-close{background:#0eb320 !important}#gritter-notice-wrapper{width:320px;max-width:480px}/*# sourceMappingURL=style.css.map */
\ No newline at end of file
diff --git a/server/www/teleport/static/js/audit/record-list.js b/server/www/teleport/static/js/audit/record-list.js
index aa8f10f..30a7b43 100644
--- a/server/www/teleport/static/js/audit/record-list.js
+++ b/server/www/teleport/static/js/audit/record-list.js
@@ -1,13 +1,43 @@
"use strict";
+const FILTER_TIME_TYPE_ALL = 0;
+const FILTER_TIME_TYPE_TODAY = 1;
+const FILTER_TIME_TYPE_WEEK = 2;
+const FILTER_TIME_TYPE_MONTH = 3;
+const FILTER_TIME_TYPE_CUSTOMER = 4;
+
$app.on_init = function (cb_stack) {
$app.dom = {
storage_info: $('#storage-info'),
- btn_refresh_record: $('#btn-refresh-record')
+ btn_refresh_record: $('#btn-refresh-record'),
+ btn_toggle_filter: $('#btn-toggle-filter'),
+
+ filter_area: $('#filter-area'),
+ filter_time_customer_area: $('#filter-time-customer-area'),
+ filter_time_all: $('#filter-btn-time-all'),
+ filter_time_today: $('#filter-btn-time-today'),
+ filter_time_week: $('#filter-btn-time-week'),
+ filter_time_month: $('#filter-btn-time-month'),
+ filter_time_customer: $('#filter-btn-time-customer'),
+ filter_time_from: $('#filter-time-from'),
+ filter_time_to: $('#filter-time-to'),
+
+ filter_protocol: $('#filter-protocol-type'),
+ filter_session_id: $('#filter-session-id'),
+ filter_remote_host_addr: $('#filter-remote-host-addr'),
+ filter_remote_acc: $('#filter-remote-acc'),
+ filter_client_ip: $('#filter-client-ip'),
+ filter_tp_user: $('#filter-tp-user'),
+
+ btn_search: $('#btn-search'),
+ btn_reset_filter: $('#btn-reset-filter')
};
$app.dom.storage_info.html('总 ' + tp_size2str($app.options.total_size, 2) + ',' + '可用 ' + tp_size2str($app.options.free_size, 2));
+ $app.filter_shown = true;
+ $app.filter_time_type = FILTER_TIME_TYPE_ALL;
+
cb_stack
.add($app.create_controls)
.add($app.load_role_list);
@@ -15,6 +45,79 @@ $app.on_init = function (cb_stack) {
cb_stack.exec();
};
+$app.create_table_record_filter = function (tbl) {
+ let _tblf = {};
+ _tblf._table_ctrl = tbl;
+
+ _tblf._table_ctrl.add_filter_ctrl('record_filter', _tblf);
+
+ // _tblf.init = function (cb_stack) {
+ // cb_stack.exec();
+ // };
+
+ _tblf.get_filter = function () {
+ let ret = {};
+ ret['time_type'] = $app.filter_time_type;
+
+ if ($app.filter_time_type === FILTER_TIME_TYPE_ALL) {
+ // no filter for time.
+ } else if ($app.filter_time_type === FILTER_TIME_TYPE_TODAY) {
+ ret['time_from'] = Math.floor(new Date((new Date().setHours(0, 0, 0, 0))).getTime() / 1000);
+ ret['time_to'] = Math.floor(new Date((new Date().setHours(23, 59, 59, 999))).getTime() / 1000);
+ } else if ($app.filter_time_type === FILTER_TIME_TYPE_WEEK) {
+ let now = new Date();
+ let thisYear = now.getFullYear();
+ let thisMonth = now.getMonth();
+ let thisDay = now.getDate();
+ let thisDayOfWeek = now.getDay();
+ let weekStart = new Date(thisYear, thisMonth, thisDay - thisDayOfWeek + 1);
+ let weekEnd = new Date(thisYear, thisMonth, thisDay + (7 - thisDayOfWeek), 23, 59, 59, 999);
+ ret['time_from'] = Math.floor(weekStart.getTime() / 1000);
+ ret['time_to'] = Math.floor(weekEnd.getTime() / 1000);
+ } else if ($app.filter_time_type === FILTER_TIME_TYPE_MONTH) {
+ let now = new Date();
+ let thisYear = now.getFullYear();
+ let thisMonth = now.getMonth();
+ let monthStart = new Date(thisYear, thisMonth, 1);
+ let nextMonthStart = new Date(thisYear, thisMonth + 1, 1);
+ let days = (nextMonthStart - monthStart) / (1000 * 60 * 60 * 24);
+ let monthEnd = new Date(thisYear, thisMonth, days, 23, 59, 59, 999);
+ ret['time_from'] = Math.floor(monthStart.getTime() / 1000);
+ ret['time_to'] = Math.floor(monthEnd.getTime() / 1000);
+ } else if ($app.filter_time_type === FILTER_TIME_TYPE_CUSTOMER) {
+ let start_time = $app.dom.filter_time_from.find('input').val();
+ let end_time = $app.dom.filter_time_to.find('input').val();
+ if (start_time.length > 0)
+ ret['time_from'] = Math.floor(new Date(start_time).getTime() / 1000);
+ if (end_time.length > 0)
+ ret['time_to'] = Math.floor(new Date(end_time).getTime() / 1000);
+ }
+
+ ret['protocol'] = parseInt($app.dom.filter_protocol.val());
+
+ let client_ip = $app.dom.filter_client_ip.val().trim();
+ let remote_addr = $app.dom.filter_remote_host_addr.val().trim();
+ let session_id = $app.dom.filter_session_id.val().trim();
+ let remote_acc = $app.dom.filter_remote_acc.val().trim();
+ let tp_user = $app.dom.filter_tp_user.val().trim();
+
+ if (client_ip.length > 0)
+ ret['client_ip'] = client_ip;
+ if (remote_addr.length > 0)
+ ret['remote_addr'] = remote_addr;
+ if (session_id.length > 0)
+ ret['sid'] = session_id;
+ if (remote_acc.length > 0)
+ ret['remote_acc'] = remote_acc;
+ if (tp_user.length > 0)
+ ret['user_name'] = tp_user;
+
+ console.log('get-filter:', ret);
+ return ret;
+ };
+};
+
+
//===================================
// 创建页面控件对象
//===================================
@@ -126,6 +229,7 @@ $app.create_controls = function (cb_stack) {
// });
// $app.table_record_role_filter = $tp.create_table_filter_role($app.table_record, $app.role_list);
// $tp.create_table_header_filter_state($app.table_record, 'state', $app.obj_states, [TP_STATE_LOCKED]);
+ $app.create_table_record_filter($app.table_record);
// 从cookie中读取用户分页限制的选择
$tp.create_table_paging($app.table_record, 'table-record-paging',
{
@@ -143,6 +247,99 @@ $app.create_controls = function (cb_stack) {
$app.table_record.load_data();
});
+ // 切换过滤器显示
+ $app.dom.btn_toggle_filter.click(function () {
+ if ($app.filter_shown) {
+ $app.dom.filter_area.hide('fast', function () {
+ $app.filter_shown = false;
+ $app.dom.btn_toggle_filter.text('显示过滤器');
+ });
+ } else {
+ $app.dom.filter_area.show('fast', function () {
+ $app.filter_shown = true;
+ $app.dom.btn_toggle_filter.text('隐藏过滤器');
+ });
+ }
+ });
+
+ // 时间选择按钮
+ $app._switch_filter_time_type = function (dom, filter_type) {
+ console.log(dom, filter_type);
+ $app.dom.filter_time_all.removeClass('btn-info').addClass('btn-default');
+ $app.dom.filter_time_today.removeClass('btn-info').addClass('btn-default');
+ $app.dom.filter_time_week.removeClass('btn-info').addClass('btn-default');
+ $app.dom.filter_time_month.removeClass('btn-info').addClass('btn-default');
+ $app.dom.filter_time_customer.removeClass('btn-info').addClass('btn-default');
+
+ dom.removeClass('btn-default').addClass('btn-info');
+ $app.filter_time_type = filter_type;
+
+ if (filter_type === FILTER_TIME_TYPE_CUSTOMER)
+ $app.dom.filter_time_customer_area.show('fast');
+ else
+ $app.dom.filter_time_customer_area.hide('fast');
+ };
+ $app.dom.filter_time_all.click(function () {
+ $app._switch_filter_time_type($(this), FILTER_TIME_TYPE_ALL);
+ });
+ $app.dom.filter_time_today.click(function () {
+ $app._switch_filter_time_type($(this), FILTER_TIME_TYPE_TODAY);
+ });
+ $app.dom.filter_time_week.click(function () {
+ $app._switch_filter_time_type($(this), FILTER_TIME_TYPE_WEEK);
+ });
+ $app.dom.filter_time_month.click(function () {
+ $app._switch_filter_time_type($(this), FILTER_TIME_TYPE_MONTH);
+ });
+ $app.dom.filter_time_customer.click(function () {
+ $app._switch_filter_time_type($(this), FILTER_TIME_TYPE_CUSTOMER);
+ });
+
+ // 时间选择框
+ $app.dom.filter_time_from.datetimepicker({format: "yyyy-mm-dd hh:ii", autoclose: true, todayHighlight: true, todayBtn: true, language: "zh-CN"});
+ $app.dom.filter_time_to.datetimepicker({format: "yyyy-mm-dd hh:ii", autoclose: true, todayHighlight: true, todayBtn: true, language: "zh-CN"});
+ $app._on_filter_time_changed = function () {
+ let start_time = $app.dom.filter_time_from.find('input').val();
+ let end_time = $app.dom.filter_time_to.find('input').val();
+
+ if (start_time === '')
+ $app.dom.filter_time_to.datetimepicker('setStartDate', '1970-01-01 00:00');
+ else
+ $app.dom.filter_time_to.datetimepicker('setStartDate', start_time);
+
+ if (end_time === '')
+ $app.dom.filter_time_from.datetimepicker('setEndDate', '9999-12-30 23:59');
+ else
+ $app.dom.filter_time_from.datetimepicker('setEndDate', end_time);
+
+ // if (start_time !== '' && end_time !== '')
+ // $app._switch_filter_time_type(null, FILTER_TIME_TYPE_CUSTOMER);
+
+ };
+ $app.dom.filter_time_from.on('changeDate', function (ev) {
+ $app._on_filter_time_changed();
+ });
+ $app.dom.filter_time_to.on('changeDate', function (ev) {
+ $app._on_filter_time_changed();
+ });
+
+ // 查询
+ $app.dom.btn_search.click(function () {
+ $app.table_record.load_data(CALLBACK_STACK.create(), {});
+ });
+ // 重置过滤器
+ $app.dom.btn_reset_filter.click(function () {
+ $app._switch_filter_time_type($app.dom.filter_time_all, FILTER_TIME_TYPE_ALL);
+ $app.dom.filter_protocol.val(0);
+ $app.dom.filter_client_ip.val('');
+ $app.dom.filter_remote_host_addr.val('');
+ $app.dom.filter_session_id.val('');
+ $app.dom.filter_remote_acc.val('');
+ $app.dom.filter_tp_user.val('');
+
+ $app.table_record.load_data(CALLBACK_STACK.create(), {});
+ });
+
cb_stack.exec();
};
@@ -266,8 +463,7 @@ $app.on_table_host_render_created = function (render) {
} else {
if (fields.time_end === 0) {
return ' 未知 ';
- }
- else {
+ } else {
if (fields.state === TP_SESS_STAT_ERR_START_RESET) {
return ' ' + tp_second2str(fields.time_end - fields.time_begin) + ' ';
} else {
@@ -366,7 +562,7 @@ $app.on_table_host_render_created = function (render) {
};
$app.do_replay_rdp = function (record_id, user_username, acc_username, host_ip, time_begin) {
- if(!$app.options.core_running) {
+ if (!$app.options.core_running) {
$tp.notify_error(tp_error_msg(TPE_NO_CORE_SERVER), '无法播放。');
return;
}
@@ -382,8 +578,7 @@ $app.do_replay_rdp = function (record_id, user_username, acc_username, host_ip,
, function (code, message) {
if (code === TPE_NO_ASSIST) {
$assist.alert_assist_not_found(code);
- }
- else
+ } else
$tp.notify_error('播放RDP操作录像失败:' + tp_error_msg(code, message));
}
);
diff --git a/server/www/teleport/static/less/_base.less b/server/www/teleport/static/less/_base.less
index 7f49143..a5d745a 100644
--- a/server/www/teleport/static/less/_base.less
+++ b/server/www/teleport/static/less/_base.less
@@ -28,10 +28,6 @@ html, body {
height: 100%;
}
-#page-container {
- min-width: 1260px;
-}
-
a {
text-decoration: none;
}
@@ -60,6 +56,37 @@ label {
font-weight: normal;
}
+hr.hr-sm {
+ //margin-top: 5px;
+ //margin-bottom: 5px;
+ padding: 1px 0;
+ margin: 5px 0;
+ border-top: 1px dashed #c4c4c4;
+}
+
+hr.small {
+ margin: 5px 0;
+}
+
+
+ul {
+ list-style: none;
+}
+
+ul.list {
+ //list-style: none;
+ margin: 0;
+ padding: 3px 0 5px 0;
+
+ li {
+ margin: 3px 3px 5px 10px;
+ }
+}
+
+button:focus {
+ outline: none;
+}
+
.clear-float {
clear: both;
}
@@ -91,28 +118,6 @@ label {
font-weight: bold;
}
-hr.hr-sm {
- //margin-top: 5px;
- //margin-bottom: 5px;
- padding: 1px 0;
- margin: 5px 0;
- border-top: 1px dashed #c4c4c4;
-}
-
-ul {
- list-style: none;
-}
-
-ul.list {
- //list-style: none;
- margin: 0;
- padding: 3px 0 5px 0;
-
- li {
- margin: 3px 3px 5px 10px;
- }
-}
-
.btn-single-line {
white-space: nowrap;
@@ -129,10 +134,6 @@ ul.list {
}
}
-hr.small {
- margin: 5px 0;
-}
-
.dlg-protocol-group {
margin-bottom: 3px;
@@ -333,3 +334,7 @@ hr.small {
.center {
text-align: center;
}
+
+#page-container {
+ min-width: 1260px;
+}
diff --git a/server/www/teleport/static/less/_overwrite_bootstrap.less b/server/www/teleport/static/less/_overwrite_bootstrap.less
index b7cccf7..12252b3 100644
--- a/server/www/teleport/static/less/_overwrite_bootstrap.less
+++ b/server/www/teleport/static/less/_overwrite_bootstrap.less
@@ -9,6 +9,15 @@
font-size: @text-size-small;
}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: none;
+}
+
//.btn.btn-sm {
// padding: 3px 8px;
//}
diff --git a/server/www/teleport/view/asset/host-list.html b/server/www/teleport/view/asset/host-list.html
index 9393373..f730d85 100644
--- a/server/www/teleport/view/asset/host-list.html
+++ b/server/www/teleport/view/asset/host-list.html
@@ -46,7 +46,7 @@
{% block block_body %}
- ## 防止页面搜索框被自动填充
+{# ## 防止页面搜索框被自动填充#}
@@ -136,17 +136,12 @@
diff --git a/server/www/teleport/view/audit/record.html b/server/www/teleport/view/audit/record.html
index 3c32457..fab88d6 100644
--- a/server/www/teleport/view/audit/record.html
+++ b/server/www/teleport/view/audit/record.html
@@ -3,45 +3,183 @@
{% set page_icon_class_ = 'fa fa-eye fa-fw' %}
{% set page_id_ = ['audit', 'record'] %}
+{% block block_extend_css_file %}
+
+{% endblock %}
+
{% block block_extend_js_file %}
+
+
+{% endblock %}
+
+{% block block_embed_css %}
+
{% endblock %}
{% block block_body %}
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 会话列表
+ 刷新列表
+ 显示过滤器
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
{% endblock %}
diff --git a/server/www/teleport/view/ops/auz-list.html b/server/www/teleport/view/ops/auz-list.html
index 2b8f585..8608fb5 100644
--- a/server/www/teleport/view/ops/auz-list.html
+++ b/server/www/teleport/view/ops/auz-list.html
@@ -48,8 +48,7 @@
- ##
- 编辑
+{# 编辑 #}
禁用
解禁
diff --git a/server/www/teleport/webroot/app/controller/audit.py b/server/www/teleport/webroot/app/controller/audit.py
index 3701c2e..bb7a079 100644
--- a/server/www/teleport/webroot/app/controller/audit.py
+++ b/server/www/teleport/webroot/app/controller/audit.py
@@ -453,15 +453,18 @@ class DoGetRecordsHandler(TPBaseJsonHandler):
sql_exclude = args['exclude'] if 'exclude' in args else {}
try:
- tmp = list()
_filter = args['filter']
+ tmp = list()
for i in _filter:
if i == 'user_id' and _filter[i] == 0:
tmp.append(i)
continue
- if i == 'user_name':
- if len(_filter[i].strip()) == 0:
- tmp.append(i)
+ elif i == 'user_name' and len(_filter[i].strip()) == 0:
+ tmp.append(i)
+ continue
+ elif i == 'protocol' and _filter[i] == 0:
+ tmp.append(i)
+ continue
for i in tmp:
del _filter[i]
diff --git a/server/www/teleport/webroot/app/model/record.py b/server/www/teleport/webroot/app/model/record.py
index 599943d..afe00ce 100644
--- a/server/www/teleport/webroot/app/model/record.py
+++ b/server/www/teleport/webroot/app/model/record.py
@@ -79,6 +79,23 @@ def get_records(handler, sql_filter, sql_order, sql_limit, sql_restrict, sql_exc
for k in sql_filter:
if k == 'state':
_where.append('r.state={}'.format(sql_filter[k]))
+ elif k == 'user_name':
+ _where.append('(r.user_username LIKE "%{k}%" OR r.user_surname LIKE "%{k}%")'.format(k=sql_filter[k]))
+ elif k == 'client_ip':
+ _where.append('r.client_ip LIKE "%{k}%"'.format(k=sql_filter[k]))
+ elif k == 'remote_addr':
+ _where.append('r.host_ip LIKE "%{k}%"'.format(k=sql_filter[k]))
+ elif k == 'sid':
+ _where.append('r.sid LIKE "%{k}%"'.format(k=sql_filter[k]))
+ elif k == 'remote_acc':
+ _where.append('r.acc_username LIKE "%{k}%"'.format(k=sql_filter[k]))
+ elif k == 'protocol':
+ _where.append('r.protocol_sub_type={k}'.format(k=sql_filter[k]))
+ elif k == 'time_from':
+ _where.append('r.time_begin>={k}'.format(k=sql_filter[k]))
+ elif k == 'time_to':
+ _where.append('r.time_end<={k}'.format(k=sql_filter[k]))
+
# elif k == 'search_record':
# _where.append('(h.name LIKE "%{}%" OR h.ip LIKE "%{}%" OR h.router_addr LIKE "%{}%" OR h.desc LIKE "%{}%" OR h.cid LIKE "%{}%")'.format(sql_filter[k], sql_filter[k], sql_filter[k], sql_filter[k], sql_filter[k]))