From 2188b204dec7b3a9625900dee2895b790920fab8 Mon Sep 17 00:00:00 2001 From: Beate Jost Date: Sat, 20 Jul 2024 22:35:07 +0200 Subject: [PATCH] Issue #1632: add edison API v2 compiler --- .../staticResources/css/roberta.css | 2 +- .../staticResources/css/roberta.css.map | 2 +- .../connections/abstract.connections.js | 2 +- .../controller/connections/connections.js | 2 +- .../js/app/roberta/models/program.model.js | 2 +- .../staticResources/js/helper/comm.js | 2 +- .../staticResources/js/helper/util.js | 2 +- OpenRobertaWeb/css/roberta.css | 12 +- .../connections/abstract.connections.ts | 5 +- .../controller/connections/connections.ts | 291 +++++++++--------- .../src/app/roberta/models/program.model.js | 4 + OpenRobertaWeb/src/helper/comm.js | 9 + OpenRobertaWeb/src/helper/util.js | 9 +- .../worker/compile/EdisonCompilerWorker.java | 62 +--- .../src/main/resources/edison.properties | 70 ++--- 15 files changed, 220 insertions(+), 256 deletions(-) diff --git a/OpenRobertaServer/staticResources/css/roberta.css b/OpenRobertaServer/staticResources/css/roberta.css index 3394200c90..0ee3d4dbd2 100644 --- a/OpenRobertaServer/staticResources/css/roberta.css +++ b/OpenRobertaServer/staticResources/css/roberta.css @@ -1 +1 @@ -:active,:focus,:hover,:visited,a:focus{outline:0;outline:none}ol,ul{margin:0}dl.grid{display:grid;grid-template-columns:1fr 100%}dd{margin:0;padding-left:1em}dl.grid dd{margin-bottom:1em}dl.grid dt{min-width:140px}@font-face{font-family:Roboto;src:url(fonts/Roboto-Regular.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;src:url(fonts/Roboto-Italic.ttf) format("truetype")}@font-face{font-family:Roboto;font-weight:700;src:url(fonts/Roboto-Bold.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:700;src:url(fonts/Roboto-BoldItalic.ttf) format("truetype")}body,html{display:flex;font-family:Roboto,sans-serif;font-size:1em;height:100%;margin:0;padding:0;width:100%}.pace{animation:pace-theme-center-circle-spin 2s linear infinite;background-color:transparent!important;background-image:url(../css/img/Nepo_N.png);background-repeat:no-repeat;background-size:cover;bottom:0;color:transparent;font-size:2rem;font-weight:100;height:12rem;left:0;line-height:12rem;margin:auto;pointer-events:none;position:fixed;right:0;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:12rem;z-index:3000}@keyframes pace-theme-center-circle-spin{0%{transform:perspective(12rem) rotateY(0deg)}to{transform:perspective(12rem) rotateY(1turn)}}body.blocklyMinimalBody *{opacity:1!important;overflow:hidden;transform:none}#header{background-color:#fff;border:0;margin:0}#header>.navbar{padding-bottom:0}.navbar-toggler{border:none;padding:12px}.navbar-toggler:focus{box-shadow:none}.nav-item:hover,button#navbarButtonsHead:hover{background-color:#bacc1e;border:0;border-radius:2px}#head-navigation-tabs>li>a.active{border-bottom:4px solid #bacc1e}.blocklyToolboxDiv{top:0!important}#iconDisplayLogin,#iconDisplayRobotState{cursor:pointer;float:left;font-size:24px;height:24px;margin:0 6px;width:24px}.robertaLogo{background:url(../css/svg/logo-word.svg) no-repeat}.fraunhoferLogo{background:url(../css/img/iais_logo.gif) no-repeat}.googleLogo{background:url(../css/svg/Google_logo.svg) no-repeat;background-size:contain}.NRWMinLogo{background:url(../css/img/AK_Schule.png) no-repeat;background-size:contain}.imgFloatLeft{float:left;height:65px;margin:4px 16px 0 0;padding:0;width:210px}#language.nav>li>a{color:#333;margin:6px;padding:0}#language.nav>li>a:focus,#language.nav>li>a:hover{background-color:#fff}#logoShowStart img{display:block;height:60px;margin:18px;width:146px}.invisible{visibility:hidden}.hidden{display:none}.img-beta,.img-deprecated{left:10px;position:absolute;top:-5px;transform:rotate(-10deg);width:auto;z-index:5}.new{background-color:#fdc300;border-radius:5px 0;font-size:14px;left:0;max-width:-moz-fit-content;max-width:fit-content;padding:5px 10px;position:absolute;top:0;z-index:99}.menuTab{font-weight:700;text-transform:uppercase}.navigation-row{margin:0;width:100%}.scroller{background-color:#fff;cursor:pointer;float:left;font-size:24px;margin:0;padding:8px 2px 0 28px}#main-section{background:#e9ecef;bottom:0;left:0;margin:0;overflow:hidden;padding:0;position:absolute;right:0;top:96px}#headNavigation.show{max-height:335px;overflow-y:auto}.navbar-nav ul{max-height:calc(100vh - 100px);overflow:hidden;overflow-y:auto}.btn-default{background-color:#fff;border-color:#ccc;color:#333;margin-right:2px}.btn-default:hover{background-color:#ddd;border-color:#ccc}#blocklyDiv,#bricklyDiv{background-size:100%;height:100%;overflow:hidden;touch-action:none}.log{bottom:50px;margin:16px 68px 32px;overflow:auto;position:fixed;top:152px}.canvasSim{left:0;position:absolute;top:0}canvas.border{border:2px solid grey}#webotsDiv{height:100%}#canvasDiv,#webotsDiv{left:0;position:absolute;top:0;width:100%;z-index:1}#sliderDiv{cursor:col-resize;width:20px;z-index:11}#sliderBorder{background-color:silver;width:6px;z-index:8}.codeActive>pre{word-wrap:inherit;height:100%;width:100%}.fromRight{background-color:#d8d8d8;display:none;float:right;height:100%;position:relative;user-select:none;-webkit-user-select:none;-moz-user-select:none;width:0;z-index:10}#infoDiv.fromRight{background-color:#eee}.fromRight.rightActive{display:block;height:100%;overflow:hidden}#codeContainer{height:100%;overflow-y:auto}#codeContent{background-color:#eee;overflow-y:auto;padding-bottom:60px;padding-top:12px}#infoContent{background-color:#fff;border:10px solid #eee;border-top:none;height:inherit;overflow:auto;-webkit-user-select:text;-moz-user-select:text;user-select:text;width:inherit}#infoContent[data-placeholder]:before{color:#555;padding:0 12px}#infoToolbar{border:10px solid #eee}#legalDiv{background-color:#fff;overflow-y:scroll;padding-top:1.5rem}#legalDiv>:not(#legalDivHeader){-webkit-touch-callout:default;padding:1rem;-webkit-user-select:text;-moz-user-select:text;user-select:text}#legalDiv>#legalDivHeader{font-size:1.25em;text-align:center}#legalDiv>#legalDivHeader>a{padding:0 1rem}#helpDiv ul{display:table;list-style-type:none}#helpDiv li{display:table-row}#helpDiv li:before{display:table-cell;padding-right:6px}#helpContent{-webkit-touch-callout:none;background-color:#fff;height:100%;overflow-y:auto;padding:10px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}#helpContent h2,#helpContent h3{border-top:1px solid #f29400;padding-left:10px;padding-top:25px}#helpContent h4,#helpContent p{margin-left:8px;margin-right:12px}#helpContent h4{margin-top:18px}.selectedHelp{background-color:#f0f0f0}#rightMenuDiv{position:absolute;right:0;top:32px;z-index:9}#mbedContent,#valuesContent{background-color:#fff;border:2px solid #33b8ca;border-radius:2px;display:inline-block;padding:12px 14px 12px 12px}#valuesContent{min-width:330px;overflow-y:auto}.customDropdown{background-color:#fff;border:1px solid #333;border-radius:2px}.rightMenuButton{background:silver;border-radius:2px;height:40px;margin-bottom:6px;position:relative;width:40px;z-index:12}.rightMenuButton:before{border-bottom:5px solid transparent;border-right:6px solid #333;border-top:5px solid transparent;content:"";height:0;position:absolute;right:100%;top:14px;width:0}.rightMenuButton.rightActive{color:#e2001a}.rightMenuButton.rightActive:before{border-bottom:5px solid transparent;border-left:6px solid #333;border-top:5px solid transparent;right:-6px}.rightMenuButton:active,div.rightMenuButton:hover{cursor:pointer}.rightMenuButton>.typcn{font-size:24px;left:7px;position:relative;top:8px}#infoButton.notEmpty,#tutorialButton.rightMenuButton{background-color:#bacc1e}#infoButton.notEmpty:before,#tutorialButton.rightMenuButton:before{border-right:6px solid #bacc1e}.menu-icons{border:0;color:#fff;font-size:24px;line-height:24px;margin:0}#toastContainer{left:50%;position:absolute;top:0}#toastLeftContainer{left:-50%;margin:0;padding:0;position:relative;top:0}#toastLeftContainer span{background-color:#fff;color:#333;font-size:16px;padding:8px;white-space:nowrap;z-index:9999}#show-startup-message{z-index:1039}#show-startup-message #popup-robot-container{margin-left:100px;margin-right:100px}#show-startup-message .popup-robot{background-color:#fff;color:#333}#show-startup-message .popup-robot.robotSpecial{background-color:transparent;color:#000}#slick-container{background:#33b8ca}.slick-list{padding-bottom:12px!important;padding-top:12px!important}.slick-dots{bottom:inherit;top:160px}#show-startup-message .slick-slide{opacity:1;transform:scale(1);transition:all .3s ease-in-out}#show-startup-message .slick-slide.slick-center{transform:scale(1.2)}#show-startup-message .slick-prev{left:-100px;top:45%}#show-startup-message .slick-next{right:-100px;top:45%}#show-startup-message .slick-next:before,#show-startup-message .slick-prev:before{color:#000;font-size:25px}#show-startup-message .popup-robot a{bottom:20px;color:#000;font-size:25px;position:relative;right:75px}#show-startup-message .popup-robot.robotSpecial a{left:86px;top:20px}#show-startup-message .robot-info{font-size:24px;position:relative}#startPopupBack{bottom:50px;color:#333;font-size:36px;position:relative;text-decoration:none}#show-startup-message .modal-dialog{border:2px solid #33b8ca}.ok,.wait{color:#33b8ca}.error{color:#333}@keyframes blinker{0%{color:#f29400}to{color:#e2001a}}.busy{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:blinker;animation-name:blinker;-webkit-animation-timing-function:cubic-bezier(1,0,0,1);animation-timing-function:cubic-bezier(1,0,0,1)}.menuDisabled{background-color:#fff}.dropdown-toggle.disabled:focus,.dropdown-toggle.disabled:hover{background-color:#fff!important;background-image:none;cursor:default;text-decoration:none}.bottomLeftButtons{bottom:6px;display:flex}#simEditButtons,.bottomLeftButtons{left:12px;position:absolute;z-index:99}#simEditButtons{top:10px}#simEditButtons button span:before{font-size:36px}.simAddMarker span{display:inline-block;font-size:12px;min-width:16px}button#simCustomColorObject span.typcn:before{color:#fbed00}button#simCustomObstacle.typcn:before{color:#009ee3}.huebee__container{background:#e7e7e7;border-radius:2px;box-shadow:none;left:0;padding:24px 10px 10px;position:absolute;top:6px}.huebee__cursor{border:5px solid #fff;border-radius:2px;height:30px;width:30px}.huebee{transition:none}.huebee__close-button{background:none;border-radius:0;display:block;height:24px;position:absolute;right:0;top:0;width:24px}.huebee__close-button__x{stroke-width:2;stroke:#bbb}.huebee__close-button__x:focus,.huebee__close-button__x:hover{stroke:#333}.huebee__close-button:focus,.huebee__close-button:hover{background:#e7e7e7}#codeButtons{background-color:#eee;bottom:0;height:70px;left:12px;padding-top:10px;position:absolute;width:100%;z-index:99}.btn-group-vertical>.btn.simbtn{margin:8px 0}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-bottom:5px}.btn-group.open .dropdown-toggle{box-shadow:none}.tooltip>.tooltip-inner{background-color:#333}.tooltip>.tooltip-arrow{border-right-color:#333}.nav-tabs>li+li{margin:0}#toolboxDiv{-webkit-overflow-scrolling:touch}#toolboxDiv>.nav-tabs{border:0}#toolboxDiv>.nav-tabs li{border:none;text-align:center;width:50%}#toolboxDiv>.blocklyToolboxDiv{position:relative!important}#toolboxDiv>.nav-tabs li>a.active{background-color:#e9ecef;color:#333}#toolboxDiv>.nav-tabs li>a{background-color:silver;border:none;border-radius:0;color:#fff;margin:0;padding:6px 0}.blocklyFlyoutBackground{fill-opacity:.925!important}.head-navi-icons:before{margin-right:2px}.dropdown-menu:not(.editor){border-radius:2px}.dropdown-menu>li>a>span.kbd{bottom:.4em;float:right;font-size:.8em;position:absolute;right:20px}#head-navigation-configuration-edit .dropdown-menu>li>a,#head-navigation-program-edit .dropdown-menu>li>a{padding-right:70px;position:relative}.dropdown-menu>li:not(.disabled)>a:focus,.dropdown-menu>li:not(.disabled)>a:hover{background-color:#bacc1e!important}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#bbb}#tokenValue{text-transform:uppercase}#roberta{background-image:url(/css/img/Roberta_ears_up.png);background-repeat:no-repeat;background-size:contain;bottom:-12px;height:180px;position:absolute;right:-20px;width:160px}#version-info{font-size:24px;font-weight:500;position:absolute;right:60px;top:16px}.cover{background-color:#ddd;height:100%;left:0;position:fixed;top:0;width:100%;z-index:2000}.connector{fill:#bacc1e;margin-top:19px;position:absolute;right:5%;z-index:900}.border-dotted{border-right:1px dashed #afca04}.popupTitel{margin-bottom:10px;margin-top:20px;text-align:center}.popup-checkbox{color:#bbb;font-size:14px;padding:0 0 16px!important}.download-checkbox{color:#bbb;font-size:14px;padding-bottom:16px!important;padding-left:16px!important;width:100%}.download-checkbox input,.popup-checkbox input{margin-bottom:6px;margin-right:6px;position:relative;top:2px}.download-checkbox label,.popup-checkbox label{display:initial;font-weight:400}.download-checkbox ul{list-style:none}#download-instructions{list-style-type:none;margin:32px 16px 0;padding:0}#download-instructions li{font-size:20px;margin-bottom:48px;padding-left:2em;position:relative}#download-instructions .typcn-Roberta:before{left:0;padding-top:4px;position:absolute}#programLink a{color:#337ab7;text-decoration:underline}.clearer{clear:both}.simWindow{display:none;left:50px;position:absolute;top:200px;z-index:99}.simWindow#simValuesWindow button.close{position:absolute;right:14px;top:4px}.simWindow#simRobotWindow button.close{position:absolute;right:16px;top:4px;z-index:99999}#VariablesContent{height:300px;overflow:auto;width:auto}#simValuesContent label{display:inline-block;margin-left:10px;margin-right:6px;width:150px}#simValuesContent div>div{max-height:70vh;white-space:nowrap}#simValuesContent span{display:inline-block;padding:0 6px;width:60px}.bigNumber{color:#8fa402;font-size:large;font-weight:700}.simWindow .modal-dialog{margin:0;min-width:-moz-max-content;min-width:max-content;pointer-events:all;width:-moz-max-content;width:max-content}.simWindow text{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.simWindow div{width:100%}.modal-backdrop.in{opacity:.3}.modal-content{border:0;border-radius:2px}.modal-body{padding:0 16px}.modal-body.left-inner-addon{word-break:break-word}#startup-message-statustext h4{font-weight:500}.modal-footer,.modal-header{border:0;padding:16px 16px 20px;text-align:left}.form-control:focus,.form-select:focus{border:1px solid #afca04;box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none;-moz-transition:none;-webkit-transition:none}.modal-footer{justify-content:space-between}.with-devider{margin-top:10px}.btn-toolbar.editor{background-color:#eee;padding:10px 0 0}.btn-default.show,.btn-info{background-color:#afca04;border-color:#afca04}.btn.btn-link.btn-user{background-color:transparent;color:var(--bs-btn-color);padding:0;text-decoration:none}.btn.btn-link.btn-user:focus,.btn.btn-link.btn-user:hover,.btn.btn-link.btn-user:hover:focus{background-color:transparent;color:var(--bs-btn-hover-color);text-decoration:underline}.btn{border-radius:2px}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{background-color:#afca04;border-color:#afca04}a.btn.editor{align-items:center;display:flex}.btn .active:not(.editor,.start),.btn .focus:not(.editor,.start),.btn:active:focus:not(.editor,.start),.btn:active:not(.editor,.start),.btn:focus:not(.editor,.start),.btn:hover:not(.editor,.start),.open>.dropdown-toggle .btn:not(.editor,.start){background-color:#c7d92b;box-shadow:none;color:#fff;outline:none}.btn:not(.editor,.galleryLike,.start){background-color:#bacc1e;border:none;border-radius:2px;box-shadow:none;color:#fff;cursor:pointer;font-size:16px;margin-left:0;margin-right:16px}button.editor{background-color:#dedede;border-radius:2px}button.editor:hover{background-color:#eee}.open>.dropdown-toggle.simbtn.btn,.simbtn.btn.active,.simbtn.btn.focus,.simbtn.btn:active,.simbtn.btn:active:focus,.simbtn.btn:focus,.simbtn.btn:hover{background-color:#f29400}#simEditButtons>.typcn-chart-line-outline{fill:#bacc1e}.simKey:hover{cursor:pointer}.fixed-table-toolbar .btn:not(.start){background-color:#bacc1e;border:none;border-radius:2px;box-shadow:none;color:#fff;cursor:pointer;font-size:24px;height:48px;margin-left:0;margin-right:4px;width:48px}.fixed-table-toolbar button.btn:last-child{margin-right:0}.fixed-table-toolbar .btn:hover:not(.start){background-color:#c7d92b}.btn-group.pull-right>.btn:last-child{margin-right:0}table .typcn-chevron-left:before,table .typcn-chevron-right:before,table .typcn-flow-merge:before{display:inline-block;transform:rotate(-90deg)}table:not(#robotTable) [data-bs-toggle=collapse]:after{content:url("data:image/svg+xml;utf8,");float:right}.fixed-table-container thead th .both{background-image:url(../css/svg/arrow-unsorted.svg)}.fixed-table-container thead th .asc{background-image:url(../css/svg/arrow-sorted-up.svg)}.fixed-table-container thead th .desc{background-image:url(../css/svg/arrow-sorted-down.svg)}table:not(#robotTable) [data-bs-toggle=collapse].collapsed:after{transform:rotate(180deg)}.modal-body>.bootstrap-table{margin:0}.blbtn{background-color:#fff;border:1px solid #d8d8d8;border-radius:2px;box-shadow:none;color:#333;cursor:pointer;font-size:0;height:48px;margin-bottom:6px;margin-left:0;margin-right:2px;width:48px}.blbtn:hover{background-color:#bacc1e}.modal-footer .btn+.btn{margin-left:0;margin-right:0}.btn-close{--bs-btn-close-focus-shadow:0}.close:focus,.close:hover{color:#333;opacity:1}#popup-robot-main{visibility:hidden}#popup-robot-main.slick-initialized{visibility:visible}.robot-container{border:1px solid #ddd;border-radius:4px;cursor:pointer;display:inline-grid;height:88px;margin:20px;padding:13px 0;text-align:center;width:140px}.startupImages{margin-top:0;position:relative;top:50%}.robot-label{display:block;line-height:14px}.robot-icon{font-size:40px;position:relative;right:-16px}.typcn.robot-icon:before{margin:0}.bootstrap-tagsinput{border:10px solid #eee;color:#555;-webkit-hyphens:auto;hyphens:auto;overflow-x:auto;padding:4px 6px;white-space:nowrap;width:100%;word-break:break-word}.bootstrap-tagsinput .tag{background-color:#bbb;border-radius:.25em;color:#fff;display:inline;font-size:75%;font-weight:700;line-height:1;margin-right:2px;padding:.2em .6em .3em;text-align:center;vertical-align:baseline;white-space:nowrap}.dropdown-menu .typcn:before{margin-right:6px}#toolboxDiv>.nav-tabs .typcn:before{position:relative;top:1px}.blbtn.typcn:before{font-size:36px;margin-right:0}.bootstrap-table .typcn:before{margin-right:0}.bootstrap-table .no-records-found td{color:#333}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{background-color:#e9ecef}.input-typcn:before{font-size:22px;left:-1px;position:relative;top:4px}label.form-invalid{background:#ddd;background:hsla(0,0%,87%,.9);border-radius:2px;color:#e2001a;font-size:16px;font-weight:400;padding:6px;position:relative;width:100%;z-index:10}label.form-invalid:after{border:6px solid transparent;border-top-color:#e2001a;content:" ";height:0;margin-top:28px;pointer-events:none;position:absolute;right:10%;width:0;z-index:20}#div-login-forms .form-group{position:relative}.form-group{width:100%}.form-group .hint{background:#ddd;background:hsla(0,0%,87%,.9);border-radius:2px;color:#333;font-size:16px;margin-top:12px;padding:6px;position:relative;width:100%;z-index:11}.hint:before{border-color:transparent transparent #8fa402;border-style:solid;border-width:0 6px 6px;content:"";height:0;position:absolute;right:75%;top:-6px;width:0}.capitalLetters{text-transform:uppercase}.input-group-addon{background:#fff;border:1px solid #afca04;border-radius:2px;padding:6px 6px 0 10px}.inner-addon{position:relative}.inner-addon .typcn{color:#c7c7c7;font-size:20px;left:0;padding:0 6px;position:absolute}#programShareWith{margin-right:15px}input.shareLabelInput.form-control,select.shareLabelInput.form-control{margin:0}legend{margin-bottom:0}.progName:before{margin-right:0}.bootstrap-table,.table{--bs-table-color:#333}.bootstrap-table:not(#start .bootstrap-table),.table:not(#robotTable){cursor:pointer}.bootstrap-table a{color:#333;margin-left:4px;margin-right:4px;text-decoration:none}.bootstrap-table a.disabled{color:#bbb;pointer-events:none}.bootstrap-table .fixed-table-toolbar .float-left,.bootstrap-table .fixed-table-toolbar .float-right{margin-top:0}.bs-bars.float-left{width:100%}td.bs-checkbox{padding:14px 8px 0!important}.bootstrap-table a:focus,.bootstrap-table a:hover{color:#000;text-decoration:none}.bootstrap-table a>span{padding:0}.galleryTable{position:absolute}.galleryTable tbody{display:flex;flex-wrap:wrap;overflow-x:hidden;overflow-y:auto}.galleryTable tr>td{background-color:transparent}.galleryTable .typcn:before{color:#eee;font-size:80px;left:50%;margin-left:-40px;position:absolute;top:10px}a.bookmark.typcn:before{color:#39378b;font-size:34px;left:40px;opacity:.8;padding:16px;position:relative;top:16px;z-index:30}a.bookmark{border-radius:50%;display:block;height:66px;margin:0;position:absolute;right:0;top:0;width:66px}a.bookmark.typcn:hover:before{font-size:30px;opacity:1;padding:18px;top:18px}#start .nav-link{background:none;border-bottom:.1875rem solid rgba(57,55,139,0);color:rgba(0,0,0,.5);margin-right:1.25rem;padding:0 0 .625rem}#start .nav-link.active{border-bottom:.1875rem solid #39378b;color:#39378b;font-weight:700}#start .nav-link:hover{color:#39378b}#start .dropdown-menu{border-radius:5px}#start .dropdown-toggle.show:after{transform:rotate(180deg)}button.btnFilter.start{background-color:#fff;border:none;border-radius:5px!important;color:#39378b;display:inline-block;font-weight:700;margin-left:6px!important;padding:.9375rem;text-decoration:none}button.btnFilter.start:hover,button.filter.start.show{background:#39378b;color:#fff}#start .fixed-table-toolbar{min-height:74px}#start .galleryTable button.pick.start{border-radius:5px 0;float:right;margin:12px -9px -9px 0;padding:10px 50px 10px 15px}#start .galleryTable button.pick.start,button#more.start{background-color:#39378b;color:#fff;display:inline-block;position:relative;text-decoration:none}button#more.start{border-radius:5px;margin:0 0 20px;padding:10px;width:auto}#start div.start.typcn{position:relative}#start .galleryTable button.pick.start:before{font-size:24px;margin:0;position:absolute;right:0;transform:translate(0);transition-duration:.3s}#start .galleryTable button.pick.start:hover:before{transform:translate(5px);transition-duration:.3s}#start .galleryTable div.start.typcn:hover{background-color:red}#start .fixed-table-body,#start .fixed-table-container.fixed-height{border:none;height:auto!important;margin:0 -1.5em}#start .galleryTable.table{position:relative}#start .galleryTable td{background-color:#fff;border-radius:5px;color:#333}.table-hover>tbody>tr:hover>*{--bs-table-color-state:0;--bs-table-bg-state:0}a.page-link{--bs-pagination-active-bg:#bacc1e;--bs-pagination-active-border-color:#bacc1e}a.page-link:focus,a.page-link:hover{box-shadow:none}.galleryIcon.typcn:before{color:#fff;font-size:24px;font-weight:700;left:40px;position:relative;top:4px}.fixed-table-container.fixed-height.has-card-view{overflow:auto}span.card-view-title{min-width:auto!important}.tutorialIcon.typcn:before{color:#fff;display:inline-block;font-size:24px;left:0;margin-left:0;margin-right:12px;position:relative;top:0;width:1.5em}div.imgSol img,div.imgSol svg{max-width:100%;overflow:hidden}#galleryList .fixed-table-toolbar .pull-left{flex:1}#galleryList .pull-right.search{display:none}.listToolbar{display:flex;justify-content:space-between;position:absolute;top:10px}.filter,.form-control:not(#start .fixed-table-toolbar>.float-right>.form-control){background-color:#fff;border:1px solid #afca04;border-radius:2px;height:48px;padding-bottom:0;padding-top:0}.form-control:not(#start .fixed-table-toolbar>.float-right>.form-control){-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}#start .fixed-table-toolbar>.float-right>.form-control{border-color:#39378b;height:54px;margin-left:6px}.search>label{margin-left:6px;margin-top:12px;max-width:100%;white-space:nowrap}.search.float-right{max-width:calc(100% - 100px)}.cardViewName{font-size:24px;-webkit-hyphens:auto;hyphens:auto;margin-bottom:12px;margin-top:80px;max-height:34px;min-height:34px;overflow:hidden;text-overflow:ellipsis;width:100%;word-break:break-all}.cardViewName,.robotName{font-weight:700;text-align:center}.robotName{font-size:20px;max-height:52px;min-height:52px}.robotImage{cursor:pointer;height:0;padding-bottom:60%;position:relative;width:100%}.robotImage img{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}#start button.accordion-button{padding:6px 12px}#start label.form-check-label{margin-left:12px;margin-top:4px}.button,.button-big,.button-big--arrow,.button-big--primary:after,.button-big--quaternary:after,.button-big--secondary:after,.button-big--tertiary:after,.button-big.icon:after,.transition{transition:all .3s}h1,h2,h3,h4,h5{font-weight:700}h1{margin-bottom:30px}h1,h2{font-size:30px;line-height:40px}h2{margin-bottom:20px}h3{font-size:30px;line-height:40px;margin-bottom:30px}h4,h5{font-size:20px;line-height:30px}.tint{color:#fff;display:inline-block;margin:0 -10px;mix-blend-mode:multiply;padding:10px 20px}.tint--primary{background:#39378b;position:relative;top:5px;transform:rotate(1deg)}.tint--secondary{background:#fdc300;transform:rotate(-1deg)}.tint--tertiary{background:#33b8ca;transform:rotate(-2deg)}.tint--quaternary{background:#88bce2;position:relative;top:-8px;transform:rotate(1deg)}p{font-size:16px;line-height:24px;margin-bottom:15px}p:last-child{margin-bottom:0}p.teaser{font-size:20px;line-height:30px}p.teaser:last-child{margin-bottom:15px}p.teaser+.button{margin-top:20px}a{color:#39378b;text-decoration:underline}@media (hover:hover){a:hover{cursor:pointer;text-decoration:none}}.button-big--arrow,.button-big--primary:after,.button-big--quaternary:after,.button-big--secondary:after,.button-big--tertiary:after,.button-big.icon:after{background-repeat:no-repeat;background-size:contain;bottom:15px;content:"";height:30px;position:absolute;right:20px;width:30px}@media (hover:hover){.button-big--arrow:hover,.button-big--primary:hover:after,.button-big--quaternary:hover:after,.button-big--secondary:hover:after,.button-big--tertiary:hover:after,.button-big.icon:hover:after{right:15px}}.button{border-radius:5px;display:inline-block;font-weight:700;padding:15px;text-decoration:none}.button--light{background:#fff;color:#39378b}.button.show{background:#39378b;color:#fff}@media (hover:hover){.button:hover{background:#39378b;color:#fff}}.button-big{border-radius:5px;color:#000;display:flex;flex-direction:column;height:100%;padding:10px 80px 10px 15px;text-decoration:none}@media (min-width:768px){.button-big{padding:15px 15px 50px}}@media (min-width:992px){.button-big{padding:15px 80px 15px 20px}}.button-big--primary{background:rgba(57,55,139,.1);border:1px solid rgba(57,55,139,.5);position:relative}.button-big--primary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--primary:hover{background:rgba(57,55,139,.2);border:1px solid #39378b}}.button-big--primary.icon{background:#39378b}.button-big--secondary{background:rgba(253,195,0,.1);border:1px solid rgba(253,195,0,.5);position:relative}.button-big--secondary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--secondary:hover{background:rgba(253,195,0,.2);border:1px solid #fdc300}}.button-big--secondary.icon{background:#fdc300}.button-big--tertiary{background:rgba(51,184,202,.1);border:1px solid rgba(51,184,202,.5);position:relative}.button-big--tertiary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--tertiary:hover{background:rgba(51,184,202,.2);border:1px solid #33b8ca}}.button-big--tertiary.icon{background:#33b8ca}.button-big--quaternary{background:rgba(136,188,226,.1);border:1px solid rgba(136,188,226,.5);position:relative}.button-big--quaternary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--quaternary:hover{background:rgba(136,188,226,.2);border:1px solid #88bce2}}.button-big--quaternary.icon{background:#88bce2}.button-big.icon{border:none;color:#fff;padding:15px 80px 10px 15px}@media (min-width:992px){.button-big.icon{padding:40px 80px 40px 40px}}.button-big.icon:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big.icon:hover{box-shadow:0 20px 50px rgba(0,0,0,.05)}}.button-big.icon svg{fill:#fff;align-self:flex-start;height:25px;margin-bottom:20px;width:auto}section{width:100%}.section--white{background:#fff}.section--light{background:#e9ecef}#start{background:#fff}#startup-message-statustext{background:#39378b;border-radius:5px;bottom:50px;box-shadow:0 0 20px rgba(0,0,0,.25);color:#fff;max-width:450px;position:absolute;right:50px;width:100%;z-index:999}#startup-message-statustext h4,#startup-message-statustext p{padding:20px}.nepo,.nepo:before{display:inline-block}.nepo:before{background-image:url(img/nepo.svg);background-position:0 100%;background-repeat:no-repeat;background-size:contain;content:"";height:20px;margin-right:5px;width:85px}.teaser-news{background:#e9ecef;border-radius:5px;display:flex;padding:15px}@media (min-width:992px){.teaser-news{padding:40px}}.teaser-news--header{font-size:20px;font-weight:700;line-height:30px;margin-bottom:10px}.teaser-news--body h3{color:#39378b}.teaser-news--image{height:auto;width:100%}#start footer{border-top:1px solid rgba(0,0,0,.2);padding-bottom:96px;width:100%}#start footer img{width:100%}#start footer .nav-link,#start footer p{font-size:14px;line-height:20px;margin-right:0}#start footer .nav-item,#start footer .nav-item:hover{background:none}#start footer .nav-link{color:#6c757d;padding:5px 0}@supports (background:-webkit-named-image(i)){.flexbox-fix{display:flex}}.galleryTable tr,.galleryTable.table{border:.75em solid #e9ecef;border-collapse:collapse}#share-with-gallery .galleryTable tr,#share-with-gallery .galleryTable.table{border-color:#fff}div.galleryLike{bottom:-20px;color:#fff;text-align:center}div.galleryLike a>span{color:#fff}button.galleryLike.btn{border:2px solid #fff;border-radius:2px;color:#fff;opacity:.75}button.galleryLike.btn:active,button.galleryLike.btn:focus,button.galleryLike.btn:focus:active,button.galleryLike.btn:hover{background-color:inherit;font-weight:600;opacity:1}div.cardViewDescription{-webkit-line-clamp:2;margin-bottom:12px;min-height:42px}div.cardViewDescription,div.cardViewInfo{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;position:relative;text-overflow:ellipsis;word-break:break-word}div.cardViewInfo{-webkit-line-clamp:1}div.cardViewLabel{display:inline-block;min-width:30%}.galleryDescription:before,.tutorialOverview:before{bottom:0;content:"...";position:absolute;right:0}.galleryDescription:after,.tutorialOverview:after{content:"";height:2.5em;margin-top:-.3em;position:absolute;right:0;width:1em}.galleryDescription.color0:after,.tutorialOverview.color0:after{background:#33b8ca}.galleryDescription.color1:after,.tutorialOverview.color1:after{background:#ebc300}.galleryDescription.color2:after,.tutorialOverview.color2:after{background:#005a94}.galleryDescription.color3:after,.tutorialOverview.color3:after{background:#179c7d}.galleryDescription.color4:after,.tutorialOverview.color4:after{background:#f29400}.galleryDescription.color5:after,.tutorialOverview.color5:after{background:#e2001a}.galleryDescription.color6:after,.tutorialOverview.color6:after{background:#eb6a0a}.galleryDescription.color7:after,.tutorialOverview.color7:after{background:#8fa402}.galleryDescription.color8:after,.tutorialOverview.color8:after{background:#bacc1e}.galleryDescription.color9:after,.tutorialOverview.color9:after{background:#9085ba}.galleryDescription.color10:after,.tutorialOverview.color10:after{background:#ff69b4}.galleryDescription.color11:after,.tutorialOverview.color11:after{background:#df01d7}.galleryAuthor{height:22px;overflow:hidden;word-break:break-all}.galleryLike.typcn:before{color:#fff;font-size:16px;position:inherit}.galleryTags{background-color:inherit;border:none;box-shadow:none;height:34px;line-height:34px;overflow:hidden;padding:0;text-decoration:none;white-space:normal}.galleryTags input{height:0}.galleryTags>.tag{background-color:#bbb;line-height:34px;white-space:normal}.galleryTable td{border:none!important;color:#fff;position:relative;width:100vw}#galleryPreview tr{width:100%}.dataTables_wrapper{margin:0 68px}#confList table tbody tr.selected,#confList table tbody tr:hover td:not(td:last-child),#progList .fixed-table-container tbody .selected td,#progList table tbody tr.selected,#progList table tbody tr:hover td:not(td:last-child),#relationsList table tbody tr.selected,#relationsList table tbody tr:hover,#userGroupList .fixed-table-container tbody .selected td,#userGroupList table tbody tr.selected,#userGroupList table tr:hover td:not(td:last-child),#userGroupMemberList .fixed-table-container tbody .selected td,#userGroupMemberList table tbody tr.selected{background-color:#bacc1e}a.delete:hover{color:#e2001a}a.gallery:hover,a.load:hover,a.share:hover{color:#bacc1e}.float-right.search.btn-group{max-width:calc(100% - 150px)}input[type=range]{-webkit-appearance:none;margin:10px 0;width:100%}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{animate:.2s;background:#bacc1e;border:0 solid #000;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:8px;width:100%}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#fff;border:1px solid #333;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:24px;margin-top:-8.5px;width:12px}input[type=range]:focus::-webkit-slider-runnable-track{background:#bacc1e}input[type=range]::-moz-range-track{animate:.2s;background:#bacc1e;border:0 solid #000;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:8px;width:100%}input[type=range]::-moz-range-thumb{background:#fff;border:1px solid #333;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:24px;width:12px}input[type=range]::-ms-track{animate:.2s;background:transparent;border-color:transparent;color:transparent;cursor:pointer;height:8px;width:100%}input[type=range]::-ms-fill-lower,input[type=range]::-ms-fill-upper{background:#bacc1e;border:0 solid #000;border-radius:4px;box-shadow:0 0 0 #000}input[type=range]::-ms-thumb{background:#fff;border:1px solid #333;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:24px;width:12px}input[type=range]:focus::-ms-fill-lower,input[type=range]:focus::-ms-fill-upper{background:#bacc1e}.table-dark{--bs-table-bg:#898989;--bs-table-border-color:none;text-transform:uppercase}#confList table,#progList table,#show-relations table,#showMultipleSimPrograms table thead{margin:0;width:100%}.updatedRow{color:#bacc1e}.table>tbody>tr>td,.table>tbody>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:9px}.dataTables_scrollBody{border-bottom:none!important}#confList .configurations,#progList .programs,#relationsList .relations{border-bottom:1px solid #eee}#relationsListing{margin-bottom:15px}#confList>h2,#logList>h2,#progList>h2{margin-left:68px}#create-user-group .modal-body{margin-bottom:1em}#userGroupList .btn-group>.btn:not(.dropdown-toggle),#userGroupMemberList .btn-group>.btn:not(.dropdown-toggle){border-radius:2px}#userGroupMemberTable .edit-member-name:not(.active),#userGroupMemberTable .member-name:not(.active){display:none}#userGroupMemberTable .btn{border:none;display:inline-block;font-size:16px;height:calc(1.25em + 12px);margin-right:0;vertical-align:top}#userGroupMemberTable.table-hover>tbody>tr:hover{background-color:transparent}#userGroupMemberTable .btn:active,#userGroupMemberTable .btn:focus{box-shadow:none;outline:none}#userGroupMemberTable .member-name-column{display:inline-block;margin:-8px;padding:8px;position:relative}#userGroupMemberTable tr.selected .member-name-column.active{background-color:hsla(0,0%,100%,.5)}#userGroupMemberTable .member-name{display:inline-block;font-size:16px;line-height:1.25;margin-left:16px;padding:7px 0}#userGroupMemberTable .edit-member-name,#userGroupMemberTable .edit-member-name form{display:inline-block}#userGroupMemberTable .edit-member-name form{margin:0;padding:0}#userGroupMemberTable .edit-member-name form label.form-invalid{bottom:0;left:0;margin-bottom:0;position:absolute;right:0;transform:translateY(100%)}#userGroupMemberTable .edit-member-name form label.form-invalid:after{border-bottom-color:red;border-top-color:transparent;margin-top:0;right:25%;top:0;transform:translateY(-100%)}#userGroupMemberTable .edit-member-name input.form-control{font-size:16px;line-height:1.25;margin:0;padding:4px 12px 4px 15px}#userGroupMemberTable .edit-member-name .btn.iais-loading-spin:before{animation:iais-loading-spin 1.2s linear infinite;display:inline-block}#simEditButtons>.btn-group{height:48px;vertical-align:top;width:48px}#simEditButtons>.btn-group.open button{background-color:#e7e7e7}#simEditButtons>.btn-group>.dropdown-menu{margin-top:6px;min-width:48px;width:48px}#simEditButtons>.btn-group>.dropdown-menu>li>a{font-size:28px;height:35px;padding-left:5px;padding-right:0;text-align:center;text-decoration:none}.simChangeObject.disabled{color:#bbb;cursor:not-allowed}#simControl.typcn-media-stop,#simStop{color:#e2001a!important}#simStop.disabled{color:#f6b3b9!important;cursor:not-allowed}.disabled a,li.disabled{color:#bbb;cursor:not-allowed;pointer-events:none}.disabled :hover,.disabled:hover{background:inherit}#simButtons>.debug{color:#1c5a94}.typcn-media-play-outline.rotated:before{display:inline-block;transform:rotate(-90deg)}@keyframes iais-loading-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.pull-none .pull-right{margin-left:3px}.pull-none .pull-left{margin-right:3px}@media only screen and (max-width:992px){#main-section{top:60px}#logoShowStart img{height:44px;margin-top:8px;width:auto}#head-navigation-tabs>li>a.active{border-bottom:none}#head-navigation{padding-bottom:8px}#roberta{bottom:-6px;height:90px;right:-10px;width:80px}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 36px}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:inherit}.modal-dialog.bigModal{min-width:300px;width:80%}#head-navigation-tabs li{float:none;overflow:hidden;width:auto}.log{margin:16px}.dataTables_wrapper{margin:0 16px}#confList>h2,#logList>h2,#progList>h2,#relationsList>h2{margin-left:16px}.navbar-fixed-bottom{border:0;margin-bottom:0;padding:16px}.simWindow{left:6px;top:60px}.border-dotted{border-right:0}}img.img-responsive{height:140px;margin:0 auto}@media only screen and (max-width:768px){#show-startup-message .slick-prev{left:-25px}#show-startup-message .slick-next{right:-25px}#show-startup-message #popup-robot-container{margin-left:25px;margin-right:25px}}@media only screen and (max-width:480px){#show-startup-message .slick-slide.slick-center{transform:scale(1)}.robot-container{margin:20px 8px}}.enjoyhint_close_btn{border:2px solid #bacc1e}.enjoyhint_close_btn:active,.enjoyhint_close_btn:hover{background:#c7d92b}@media print{div#show-startup-message{display:none!important}svg.blocklySvg{overflow:visible}.nav,.navbar{display:block}.headNavigationTabs{margin-top:59px;z-index:1}.navbar-collapse{padding-left:10px;padding-right:10px}.collapse{display:block;visibility:visible}#blocklyDiv{border:none}div#simButtonsCollapse{display:none}.blocklyToolboxDiv{display:none!important}.blocklyMainBackground{stroke:none!important}#rightMenuDiv,g.blocklyButtons{display:none}.blocklyMainBackground{stroke:none}a#tabConfiguration{display:none}.nav-tabs>li{width:100%}#headNavigationTabs{border:none}#head-navigation-tabs>li>a.active{border-bottom:2px solid #000}g.blocklyBlockCanvas{transform:translate(-200px,-50px)}div#releaseInfo{display:none}}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:inherit!important}#tutorialRoberta{background-image:url(../css/svg/Roberta_zwinkernd.svg);background-repeat:no-repeat;background-size:200px;bottom:-15%;height:200px;position:absolute;right:-5%;width:200px}.tutorialLevelStars{position:relative}.tutorialLevel.typcn:before{color:#fff;display:table-cell;font-size:24px;left:0;position:relative;top:0}#tutorialOverview .modal-dialog{border:2px solid #33b8ca;font-size:16px}#tutorial-navigation,#tutorialEnd{display:none}#tutorial-navigation ul{margin:16px}ul#tutorial-close{float:right}#tutorialEnd a:before{font-size:1.5em;line-height:42px}#tutorial-close,#tutorial-header,.step{color:#333}#tutorial-navigation li{text-align:center}#tutorial-navigation li:last-child a:before{position:absolute;right:3px;top:3px}#tutorial-navigation li.step{background:#eaf0bb;float:left;height:48px;list-style:none;padding:0;text-align:center}#tutorial-navigation li.step.active{background:#bacc1e}#tutorial-navigation li a{box-sizing:border-box;color:inherit;display:inline-block;float:left;font-size:24px;font-weight:700;height:48px;margin:0 0 0 -15px;padding:6px 8px 6px 16px;text-decoration:none;width:48px}#tutorial-navigation li:first-child a{margin-left:0;width:48px}#tutorial-navigation li.step:after{background-image:url(../css/svg/step_connector.svg);content:" ";display:inline-block;height:48px;width:17px}#tutorial-navigation li.step.last:after{background-image:url(../css/svg/step_connector_last.svg)}#tutorial-navigation li.step.active:after{background-image:url(../css/svg/step_connector_active.svg)}#tutorial-navigation li.step.preActive:after{background-image:url(../css/svg/step_connector_before_active.svg)}#tutorial-navigation li.step.last.active:after{background-image:url(../css/svg/step_connector_active_last.svg)}#tutorial-navigation .navbar-nav>.active>a,#tutorial-navigation .navbar-nav>li>a:hover{background-color:transparent;color:#333}#tutorialNavs{left:60px;position:relative}#tutorial-navigation a.typcn.typcn-delete{background:#fff;border:6px solid #fff;color:#333;font-size:36px;position:absolute;text-decoration:none;top:24px}#tutorial-header{height:92px;line-height:76px;margin:0;overflow:hidden;vertical-align:middle}#tutorialOverview>.modal-backdrop.fade.in{opacity:.6}#tutorialDiv.fromRight{background-color:#eee}#tutorialContent{background-color:#fff;font-size:16px;height:100%;margin:10px;overflow-y:auto;padding:16px}#tutorialContent .tip{list-style-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzAiIHdpZHRoPSIzMiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMxYTFhMTh9LmNscy0ye2ZpbGw6I2ZmZn08L3N0eWxlPjwvZGVmcz48ZyB0cmFuc2Zvcm09InNjYWxlKC4xKSIgaWQ9IkViZW5lXzIiIGRhdGEtbmFtZT0iRWJlbmUgMiI+PGcgaWQ9IkViZW5lXzEtMiIgZGF0YS1uYW1lPSJFYmVuZSAxIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMDQuNDUgMTgyLjYxYTIxLjE5IDIxLjE5IDAgMSAxIDYuMjEtMTUgMjEuMTggMjEuMTggMCAwIDEtNi4yMSAxNW0yLjcxLTMyLjY4YTI1IDI1IDAgMSAwIDUuNDMgOC4xMiAyNS4wOSAyNS4wOSAwIDAgMC01LjQzLTguMTIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zMTYgMTYuN2ExLjc1IDEuNzUgMCAwIDEtLjk0LjIzaC0yMy42M3YtMy41OEgzMTVhMS43OSAxLjc5IDAgMCAxIDEgMy4zNW0tMzIuMjEtMTBhOS4xIDkuMSAwIDAgMC0xLjgtLjMxSDI1OC41M2E3LjkzIDcuOTMgMCAwIDEgNC0yLjM1IDExLjA3IDExLjA3IDAgMCAxIDIuODYtLjJoMTQuNzhhNy43NiA3Ljc2IDAgMCAxIDEuMzIuMiA4IDggMCAwIDEgNC40IDIuODQgOC4xMyA4LjEzIDAgMCAxIC44NiAxLjM3IDguNjEgOC42MSAwIDAgMC0zLTEuNTRtMi4xMSAxNi43MmE3Ljk0IDcuOTQgMCAwIDEtNC40MyAyLjggMTEuMTkgMTEuMTkgMCAwIDEtMi44Ni4yaC0xNC43NmE3LjI2IDcuMjYgMCAwIDEtMS4zMi0uMiA3LjkyIDcuOTIgMCAwIDEtNC0yLjMzaDIyLjM5YTExLjUxIDExLjUxIDAgMCAwIDEuNjktLjA5IDguNjQgOC42NCAwIDAgMCAxLjc4LS40NCA4LjU0IDguNTQgMCAwIDAgMi40Mi0xLjM3IDcuMzEgNy4zMSAwIDAgMS0uODkgMS40bS0yOS40Ny01di02LjYyYTggOCAwIDAgMSAuMTYtMS41NmgyMy44M2E3LjQ3IDcuNDcgMCAwIDEgMi4zMi4xOCA0LjkyIDQuOTIgMCAwIDEgLjM1IDkuMzYgNC44NiA0Ljg2IDAgMCAxLTEgLjI1IDcuMzcgNy4zNyAwIDAgMS0xLjE3IDBoLTI0LjMzYTggOCAwIDAgMS0uMTYtMS42Nm0tMy43MSAxLjY2aC00Ny40OGwtNC45LTkuODRoNTIuMzhhMTEuOTQgMTEuOTQgMCAwIDAtLjEyIDEuNTZ2Ni42N2ExMS42IDExLjYgMCAwIDAgLjExIDEuNjZtLTg3LjkxIDI1Ljc3YTM3LjExIDM3LjExIDAgMCAwLTE4LjQ0LTEwLjk0Yy0uODEtLjItMS42NC0uMzctMi40Ny0uNTFsNTEuNDUtMjUuNjFMMjA0IDI2LjI4Wm0zMC41NyAxMzIuOTVhMjkuNSAyOS41IDAgMCAxLS4zMSAzLjUxIDIxLjM0IDIxLjM0IDAgMCAxLTUuODQgMTIuMjcgMjAuODUgMjAuODUgMCAwIDEtMTIuNDUgNS40NCAzNC4xOCAzNC4xOCAwIDAgMS0zLjU2LjIzaC01NC42di02LjA2Yy4yNC0uMjYuNDYtLjUzLjctLjhoNDVjMS4xIDAgMi4zMSAwIDMuNDktLjA4YTI5IDI5IDAgMCAwIDMuNTctLjQzIDIzLjA5IDIzLjA5IDAgMCAwIDYuOTItMi40MSAxOC42OSAxOC42OSAwIDAgMCA1LjczLTQuODUgMjEuMDYgMjEuMDYgMCAwIDAgMy40My02LjUyIDI2Ljg0IDI2Ljg0IDAgMCAwIDEuMjktNy4xM1YzOC4ybDYuNjItMy4yOXYxNDMuODdtLTc3Ljg2IDEwLjc1aC0uMzd2LjQ3YTM2Ljc4IDM2Ljc4IDAgMCAxLTIuNSAyLjc5IDM2LjUgMzYuNSAwIDEgMSAyLjg3LTMuMjZNNjQuMTUgMjYzLjJ2LTY1LjM4YTM5LjMyIDM5LjMyIDAgMCAwIDUwLjYxIDB2NjUuMzhINjQuMTVabTY1IDMuODNhMzAuNzEgMzAuNzEgMCAwIDEgMzAuMzUgMjUuNzFjLjEzLjc5LjIzIDEuNTguMyAyLjM4bC4wNS43NUgxOS4wOHYtLjM3bC4wNS0uNmEzMC43NyAzMC43NyAwIDAgMSAyOC40NC0yNy44Yy44My0uMSAxLjYxLS4xIDIuNDMtLjFoNzkuMTNaTTUwLjA5IDE2Ni40NmE2MC40MSA2MC40MSAwIDAgMS0yNC45LTEwNC44NUEzNi41MiAzNi41MiAwIDAgMCAyNCA3MC44NmEzNyAzNyAwIDAgMCAyOC4xNyAzNiAzNy40MSAzNy40MSAwIDAgMCA2LjA3IDFjMSAuMDggMi4wNi4xIDMuMDYuMWg3NS44OGMxIDAgMiAwIDMuMDYtLjFhMzcuNDIgMzcuNDIgMCAwIDAgNi4wNy0xIDM1LjM4IDM1LjM4IDAgMCAwIDQuNTMtMS40M3Y2MC4zMWgtMjIuMDNhMzkuMzkgMzkuMzkgMCAwIDAtNzguNzMuNzVtMTM0Ljc5IDUuMzFhMjAuMTggMjAuMTggMCAwIDEtMy44NyAxMS40MyAxNC44MyAxNC44MyAwIDAgMS00LjUzIDMuODUgMTguOTIgMTguOTIgMCAwIDEtNS43NiAyIDI2IDI2IDAgMCAxLTMuMTIuMzljLTEuMDUuMDctMi4wOS4wNy0zLjI0LjA2aC00Mi4xYTM5LjE2IDM5LjE2IDAgMCAwIDYuNTktMjBoMjUuODh2LTY1Ljg3YTM3IDM3IDAgMCAwIDEyLjU4LTU0LjhsMTcuNi04Ljc2djEzMS42N1ptLTE1MC0xMjEuNGEzMy4xNiAzMy4xNiAwIDAgMSAyMy42OC0xMi42NmMuOTItLjA3IDEuODMtLjA5IDIuNzctLjFoNzUuODljLjk1IDAgMS44NSAwIDIuNzcuMWEzMy4yMiAzMy4yMiAwIDAgMSA1LjQ0IDY1LjM4IDM0IDM0IDAgMCAxLTUuNDIuODhjLS45Mi4wNy0xLjgyLjA5LTIuNzcuMDloLTc1LjljLTEgMC0xLjg1IDAtMi43Ny0uMDlhMzMuOTQgMzMuOTQgMCAwIDEtNS40NC0uODcgMzMuMjMgMzMuMjMgMCAwIDEtMTguMi01Mi43NG0yODIuOTQtNDAuMTVhNS42NSA1LjY1IDAgMCAwLTIuODYtLjcyaC0yMy44YTExLjc2IDExLjc2IDAgMCAwLTguNzgtOS4xOSAxMS44OSAxMS44OSAwIDAgMC0yLS4zaC0xNi43NmExMi4yIDEyLjIgMCAwIDAtMiAuMjggMTEuNzQgMTEuNzQgMCAwIDAtNi41NiA0LjE0IDExLjI0IDExLjI0IDAgMCAwLTEuMjUgMS45NGgtNTUuNDRMMTk3IDMuNjRsLTYwLjUxIDMwLjEzSDYxLjMzYy0xIDAtMiAwLTMuMDYuMUEzNyAzNyAwIDAgMCAzMS45MSA0OGEzNi4yMiAzNi4yMiAwIDAgMC00LjQzIDcuMjNsLS4xMS0uMTVhNjQuMjYgNjQuMjYgMCAwIDAgMjIuOCAxMTUuMzIgMzkuMTQgMzkuMTQgMCAwIDAgMTAuMTYgMjMuNzV2NjlINTBjLS44OCAwLTEuNzkgMC0yLjY4LjA5YTM0LjU0IDM0LjU0IDAgMCAwLTMyIDMxLjI2bC0uMDYuNjctLjA1LjkxYzAgLjg0IDAgMS42OC0uMDUgMi41M3YuOTRjMCAuMDguMDUuMDYuMS4wNmgxNDguNDFjLjA3IDAgLjA5IDAgLjA4LS4wOHYtNC43OWMtLjA3LS45LS4xOS0xLjc5LS4zNC0yLjY4YTMzLjg0IDMzLjg0IDAgMCAwLTEuMjktNS4yNCAzNC42MSAzNC42MSAwIDAgMC0zMi44My0yMy42N2gtMTAuN1YyMDRoNTQuNjVhMzkuNDUgMzkuNDUgMCAwIDAgNC0uMjUgMjguNzEgMjguNzEgMCAwIDAgNy44LTIgMjEuODEgMjEuODEgMCAwIDAgNi44Ni00LjUgMjIuNDYgMjIuNDYgMCAwIDAgNC43LTYuNzEgMjguNDcgMjguNDcgMCAwIDAgMi4yNy03LjczIDMyLjI2IDMyLjI2IDAgMCAwIC4zNC00VjE3Ny4xNWMwLS4wNiAwIDAgMCAwVjMzbDEwLTUtMi4wNS00LjEyaDQ2Ljc0YTEwLjcgMTAuNyAwIDAgMCAxLjE4IDEuODUgMTEuNzggMTEuNzggMCAwIDAgNi41MiA0LjIxIDExLjUgMTEuNSAwIDAgMCAyIC4yOWgxNi44NWExMS41NCAxMS41NCAwIDAgMCAyLS4yOCAxMS43NiAxMS43NiAwIDAgMCA4Ljg5LTkuMjFIMzE1YTUuNjIgNS42MiAwIDAgMCAyLjgyLTEwLjUyIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjcuOTQgOTYuMjZBMjQuNzYgMjQuNzYgMCAxIDEgOTIuNyA3MS40OWEyNC43NiAyNC43NiAwIDAgMS0yNC43NiAyNC43NyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQxLjQyIDcxLjVBMjYuNTEgMjYuNTEgMCAwIDEgNjcuOTQgNDVhMjYuNTEgMjYuNTEgMCAwIDEgMjYuNTEgMjYuNUEyNi41MSAyNi41MSAwIDAgMSA2Ny45NCA5OHYtMy41YTIzIDIzIDAgMCAwIDIzLTIzIDIzIDIzIDAgMCAwLTIzLTIzIDIzIDIzIDAgMCAwLTIzIDIzIDIzIDIzIDAgMCAwIDIzIDIzVjk4YTI2LjUxIDI2LjUxIDAgMCAxLTI2LjUyLTI2LjVaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNjEgNjQuNTlhOS43NiA5Ljc2IDAgMSAxLTIuODYgNi45IDkuNzggOS43OCAwIDAgMSAyLjg2LTYuOU02Ny45NCA4NWExMy41IDEzLjUgMCAxIDAtOS41NS00IDEzLjQ4IDEzLjQ4IDAgMCAwIDkuNTUgNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY3Ljk0IDc3LjY4YTYuMjkgNi4yOSAwIDAgMCAxLjY2LTEyLjM2djdoLTMuMzJ2LTdhNi4yOSA2LjI5IDAgMCAwIDEuNjYgMTIuMzYiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMzAuNyA5Ni4yNmEyNC43NiAyNC43NiAwIDEgMSAyNC43Ni0yNC43NiAyNC43NiAyNC43NiAwIDAgMS0yNC43NiAyNC43NiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNC4xOSA3MS40OUEyNi41MSAyNi41MSAwIDAgMSAxMzAuNyA0NWEyNi41MSAyNi41MSAwIDAgMSAyNi41MSAyNi41MUEyNi41MSAyNi41MSAwIDAgMSAxMzAuNyA5OHYtMy41YTIzIDIzIDAgMCAwIDIzLTIzIDIzIDIzIDAgMCAwLTIzLTIzIDIzIDIzIDAgMCAwLTIzIDIzIDIzIDIzIDAgMCAwIDIzIDIzVjk4YTI2LjUyIDI2LjUyIDAgMCAxLTI2LjUyLTI2LjUyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyMy44IDY0LjU5YTkuNzcgOS43NyAwIDEgMS0yLjg2IDYuOSA5Ljc4IDkuNzggMCAwIDEgMi44Ni02LjlNMTMwLjcgODVhMTMuNSAxMy41IDAgMSAwLTkuNTUtNCAxMy40NyAxMy40NyAwIDAgMCA5LjU1IDQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzAuNyA3Ny42OGE2LjI5IDYuMjkgMCAwIDAgMS42Ni0xMi4zNnY3SDEyOXYtN2E2LjI5IDYuMjkgMCAwIDAgMS42NiAxMi4zNiIvPjwvZz48L2c+PC9zdmc+)}#tutorialContent ul{list-style-image:none}#tutorialContent a{color:#f29400;font-weight:700;text-decoration:none}.quiz.continue,div#helpDiv{margin-top:24px}.quiz.continue{border-top:1px solid #eee;padding-top:10px;text-align:right}.quiz.footer,p.quiz{margin-top:16px}.quiz.footer>.btn.right{margin-left:16px}.quiz.answer{cursor:pointer;display:block;margin-top:16px;padding-left:34px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.quiz.answer input{cursor:pointer;opacity:0;position:absolute}.checkmark{background-color:#eee;border-radius:2px;height:25px;left:2px;position:absolute;top:2px;width:25px}.quiz.answer input:checked~.checkmark,.quiz.answer:hover input~.checkmark{background-color:#ccc}.quiz.answer>.checkmark:after{content:"";display:none;position:absolute}.quiz.answer input:checked~.checkmark:after{display:block}.quiz.answer>.checkmark:after{border:solid #fff;border-width:0 3px 3px 0;height:14px;left:10px;top:5px;transform:rotate(45deg);width:6px}label.quiz.answer{border-radius:4px;padding:6px 10px 6px 36px}label.quiz.answer.correct{background-color:#c7d92b;border:2px solid #c7d92b;padding:4px 8px 4px 34px}label.quiz.answer.fail{border:2px solid #e2001a;padding:4px 8px 4px 34px}#welcomeHaribo{z-index:9999}#welcomeHaribo .modal-dialog{width:40vw}#simModal .fixed-table-header{background-color:#898989;color:#fff}#simModal .fixed-table-header table{color:#fff}.lds-ellipsis{display:inline-block;height:100px;position:relative;width:64px}.lds-ellipsis div{animation-timing-function:cubic-bezier(0,1,1,0);background:#333;border-radius:50%;height:11px;position:absolute;top:27px;width:11px}.lds-ellipsis div:first-child{animation:lds-ellipsis1 .6s infinite;left:6px}.lds-ellipsis div:nth-child(2){animation:lds-ellipsis2 .6s infinite;left:6px}.lds-ellipsis div:nth-child(3){animation:lds-ellipsis2 .6s infinite;left:26px}.lds-ellipsis div:nth-child(4){animation:lds-ellipsis3 .6s infinite;left:45px}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(19px)}}#simModal .fixed-table-header{background-color:#b3bfb8}td[lkey="Blockly.Msg.POPUP_DOWNLOAD_STEP_A_SENSEBOX"]{padding-bottom:2.5em}#flaskEditor{height:100%}#sourceCodeEditor pre{background-color:transparent;border:0 solid #ccc;border-radius:0;color:#000;font-family:Roboto,sans-serif;line-height:18px;padding:0;position:absolute;top:0}#sourceCodeEditor .codeflask{height:calc(100% - 80px);height:-webkit-calc(100% - 80px);position:relative}#sourceCodeEditor textarea{color:transparent;font-size:13px;top:0;z-index:5}#codeDiv pre,#sourceCodeEditor textarea{line-height:18px;padding:0;position:absolute}#codeDiv pre{background-color:transparent;background-image:linear-gradient(transparent 50%,#f7f7f7 0);background-repeat:repeat;background-size:100% 2.77em;border:0 solid #ccc;border-radius:0;color:#000;font-family:Roboto,sans-serif;margin-top:0;width:100%}#sourceCodeEditor .codeflask__flatten{line-height:18px;padding-top:0!important}#codeDiv textarea{color:hsla(0,0%,100%,0)!important;height:calc(100% - 82px);line-height:18px;margin-top:0;padding:0;position:absolute;z-index:8}#codeDiv .codeflask__flatten{background-color:#fff0;line-height:18px;padding-top:0!important}#codeDiv .codeflask__lines,.codeflask__lines{background-color:#eee;z-index:5!important}.codeflask__lines{padding-top:0!important}.codeflask__lines__line{color:#333;line-height:18px!important}.codeflask--has-line-numbers:before{z-index:4!important}pre code{white-space:inherit}#confirm,#confirmCancel{text-transform:capitalize}.blinking{animation:blinkingBackground 1.2s infinite}.blinking>span{animation:blinkingForeground 1.2s infinite}@keyframes blinkingBackground{0%{background-color:#e2001a;border-bottom:4px solid #e2001a}49%{background-color:#e2001a;border-bottom:4px solid #e2001a}60%{background-color:transparent;border-bottom:4px solid transparent}99%{background-color:transparent;border-bottom:4px solid transparent}to{background-color:#e2001a;border-bottom:4px solid #e2001a}}@keyframes blinkingForeground{0%{color:#fff}49%{color:#fff}60%{color:#333}99%{color:#333}to{color:#fff}}#blocklyDiv.debug path.blocklyPath{fill-opacity:.3}#blocklyDiv.debug path.blocklyPath.selectedBreakpoint{stroke-opacity:1;stroke:purple;stroke-width:2px;transition:none}#blocklyDiv.debug path.blocklyPath.breakpoint{stroke-opacity:1;stroke:red;stroke-width:2px;transition:none}.badge-primary{background-color:#f29400}#releaseInfo{background-color:#fbde00;border:1px solid #d8d8d8;bottom:60px;left:70%;padding:16px;position:fixed;right:8px;z-index:2999}#releaseInfo>span{display:inline-block!important;padding-right:16px;vertical-align:middle}#releaseInfo>.no-button{position:absolute;right:0;top:0}@media (max-width:60em),(max-width:800px){#releaseInfo{left:40%}}.port{cursor:default!important}#valuesContent .panel-heading{background-color:#ddd}#valuesContent .panel-group{margin:20px 0 0}.panel-title>a:before{background-image:url('data:image/svg+xml;charset=utf-8,');position:relative}.panel-title>a.collapsed:before,.panel-title>a:before{background-size:10px;content:"";display:inline-block;height:10px;margin:0 4px;width:10px}.panel-title>a.collapsed:before{background-image:url('data:image/svg+xml;charset=utf-8,')}.panel-title>a{color:inherit;display:inline-block;height:100%;line-height:1.5;text-decoration:none;width:100%}#accordion .panel-body{border:none;max-height:50vh;overflow:auto}input,textarea{border:1px solid #e9ecef;box-sizing:border-box;margin:0;outline:none;padding:10px}input[type=button]{-webkit-appearance:button;cursor:pointer}.btn input[type=radio]{clip:rect(0,0,0,0);pointer-events:none;position:absolute}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}.input-group{clear:both;position:relative}.input-group input[type=button]{background-color:#ddd;transition:all .3s ease}.input-group .button-minus,.input-group .button-plus{font-weight:700;height:32px;padding:0;width:32px}.input-group .quantity-field{display:inline-block;font-size:14px;height:32px;position:relative;resize:vertical;text-align:center;width:32px}input[type=number]{-moz-appearance:textfield}#nn,#nn-learn{height:100%;width:100%}#nn .nn-middle-size{font-size:20px}#nn .nn-bold,#nn-learn .nn-bold{font-weight:700}#nn .nn-large-size{font-size:28px}#nn-epoch-num{width:80px}#nn-top-controls{-webkit-justify-content:space-around}#nn-learn-top-controls,#nn-top-controls{background:#fff;border-bottom:1px solid #ddd;box-shadow:0 1px 4px rgba(0,0,0,.08);display:flex;padding:16px 0;width:100%}#nn-learn-top-controls{justify-content:space-between}#nn-learn-top-controls .nn-control,#nn-top-controls .nn-control{flex-grow:0;margin-left:10px;margin-top:6px}#nn-show-math-all.nn-control{flex:0 0 15%;margin-right:10px}#nn-learn-show-iteration-all.nn-control,#nn-show-iteration-all.nn-control,#nn-show-next-neuron-all.nn-control{align-items:stretch;display:flex;flex-direction:column;justify-content:space-evenly;margin:0 10px}#nn-learn-show-activation{padding:8px;width:100px}#nn-top-controls .nn-control .label{color:#777;display:block;font-size:13px;font-weight:300;margin-bottom:6px}#nn-top-controls .nn-control .value{font-size:24px;font-weight:300;margin:0}#nn-top-controls .nn-control .select,.nn-input-div{position:relative}.nn-input-div{height:36px}#goto-sim,#learn-goto-sim{background-color:#fff;bottom:10px;box-shadow:0 2px 5px rgba(0,0,0,.2);color:#333;font-size:36px;margin:0;max-width:48px;min-height:48px;min-width:48px;padding:2px 0 0;position:absolute;right:10px;z-index:9999}#goto-sim:hover,#learn-goto-sim:hover{background-color:#bacc1e}.nn-selection{background-color:#23b6ac;border:none;color:#fff}#nn-show-math,.nn-selection{border-radius:2px;min-height:36px;padding:6px}#nn-show-math{background-color:#f0f0f0}#nn-learn-show-iteration,#nn-show-iteration,#nn-show-next-neuron{background-color:#fafafa;color:rgba(0,0,0,.6);font-weight:300;text-align:center}#nn-learn-main-part,#nn-main-part{display:flex;justify-content:space-between;margin-bottom:50px;margin-top:30px;padding-top:2px;position:relative}#nn-learn-main-part .output .mdl-checkbox__label.label,#nn-main-part .output .mdl-checkbox__label.label{line-height:1.7em}#nn-features,#nn-learn-features{position:relative;width:10%}#nn-features .nn-plus-minus-neurons{height:44px;line-height:28px;position:absolute;top:-58px;width:120px}.nn-modal-content{background-color:#fff;border:1px solid}.nn-popup-modal{bottom:0;display:none;left:50%;max-width:90%;position:fixed;transform:translate(-50%);z-index:1}.nn-modal-dialog{width:auto}button.nn-btn{background-color:#23b6ac;border:none;border-radius:2px;color:#fff;font-size:20px;height:36px;margin-right:inherit;padding:0;width:36px}.nn-btn.nn-top-control-button{height:27px;width:27px}.nn-btn.nn-cancel{background-color:#cd5c5c}.nn-btn.nn-cancel:hover{background-color:#e8c0c0}#nn-features .nn-plus-minus-neuron-button.active-input{background-color:#bacc1e;box-shadow:inset 0 0 2px 2px #000}#nn-features .nn-plus-minus-neuron-button.active-hidden{background-color:#c7b7b7;box-shadow:inset 0 0 2px 2px #000}#nn-features .nn-plus-minus-neuron-button.active-output{background-color:#f29400;box-shadow:inset 0 0 2px 2px #000}#nn-test-data-upload,#nn-training-data-upload{display:none}.nn-table-input{width:100px}.nn-user-input-table-header{display:inline-block;width:100%}.nn-input-background-color{background:#8fa40266}.nn-output-background-color{background:#f2940066}button.nn-btn:hover{background-color:#ade7e4}.nn-selection option{background-color:#fff;color:#333}#nn-top-controls .nn-num-layers-group{font-weight:700}#nn-features .nn-plus-minus-neurons .nn-plus-minus-neuron-button{margin-right:4px}#nn-features svg .main-label,#nn-learn-features svg .main-label{fill:#333;font-size:13px;font-weight:300}#nn-features .nn-showval,#nn-learn-features .nn-showval{text-anchor:start;cursor:pointer;display:block;font-size:16px;font-weight:700}#nn-features svg #markerArrow,#nn-learn-features svg #markerArrow{fill:#000;stroke:#000;stroke-opacity:.2}#nn-features .node_input rect,#nn-learn-features .node_input rect{fill:#8fa402;cursor:default}#nn-features .node_hidden rect,#nn-learn-features .node_hidden rect{fill:#d3d3d3;cursor:default}#nn-features .node_output rect,#nn-learn-features .node_output rect{fill:#f29400;cursor:default}#nn-features .core .link,#nn-learn-features .core .link{stroke-dasharray:9 1;stroke-dashoffset:1}#nn-features .core .nn-weight-click{stroke-width:14;stroke:#000;fill:none;cursor:pointer;opacity:0}.nn-input{border:2px solid #23b6ac;height:100%;position:relative;top:-4px;width:6em}#nn-learn-features .core .nn-weight-click{stroke-width:14;stroke:#000;fill:none;cursor:pointer;opacity:0}#nn-features .core .nn-weight-show-click,#nn-learn-features .core .nn-weight-show-click{stroke-width:14;stroke:gray;fill:none;cursor:pointer;opacity:.3}.nn-bias-click{cursor:pointer}#nn-features .canvas canvas,#nn-learn-features .canvas canvas{border:2px solid #000;border-radius:3px;box-shadow:0 2px 5px rgba(0,0,0,.2);left:-2px;position:absolute;top:-2px}#nn-network{left:0;position:absolute;top:50px}#nn-editCard{background:#fff;border:1px solid #aaa;border-radius:5px;cursor:default;display:none;left:240px;padding:5px;position:absolute;z-index:10}#nn-learn-training-bias-linechart,#nn-learn-training-weight-linechart{height:65px;width:200px}#nn-learn-training-bias-linechart,#nn-learn-training-weight-linechart,#nn-nameCard{background:#fff;border:1px solid #aaa;cursor:default;display:none;position:absolute;z-index:10}#nn-nameCard{border-radius:5px;left:240px;padding:5px}#nn-name-message{background:#fff;border:12px 4px 4px;color:#333}#nn-table-user-input input{width:100px}.nn-type-button{position:relative;top:5px}.nn-btn.nn-finish-button{left:-4px;position:relative}.nn-metrics{align-content:center;display:flex;flex-basis:25%;flex-wrap:nowrap;font-weight:300;height:60px;justify-content:space-evenly;margin-right:10px;position:relative}#nn-learn-training-loss-linechart{border:1px solid #333;flex:0 0 40%;height:100%;max-width:200px}.nn-output-stats{padding:10px}#nn-random-values-from-to{height:36px;position:relative}#nn-random-values-from-to>input{width:50px}#nn-random-values-from-to>span{position:relative;top:-4px}#nn-random-values-from-to>.nn-random-values-finished-button{padding-left:5px;position:relative;top:0}.nn-output-stats .value{color:rgba(0,0,0,.6);font-weight:300;text-align:center}.nn-type{style:"font-size: 14px";height:40px}canvas{display:block}.link{fill:none;stroke:#aaa;stroke-width:1}g.column rect{stroke:none}#downloadType{padding:8px 20px 20px;text-align:center}.downloadType{border:1px solid #bacc1e;border-radius:2px;cursor:pointer;font-size:18px;margin:12px;padding:12px;text-align:center;text-decoration:none;width:100%}#progressBar{height:10px;width:0}#progressBar,.downloadType:hover{background-color:#bacc1e}/*# sourceMappingURL=roberta.css.map */ +:active,:focus,:hover,:visited,a:focus{outline:0;outline:none}ol,ul{margin:0}dl.grid{display:grid;grid-template-columns:1fr 100%}dd{margin:0;padding-left:1em}dl.grid dd{margin-bottom:1em}dl.grid dt{min-width:140px}@font-face{font-family:Roboto;src:url(fonts/Roboto-Regular.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;src:url(fonts/Roboto-Italic.ttf) format("truetype")}@font-face{font-family:Roboto;font-weight:700;src:url(fonts/Roboto-Bold.ttf) format("truetype")}@font-face{font-family:Roboto;font-style:italic;font-weight:700;src:url(fonts/Roboto-BoldItalic.ttf) format("truetype")}body,html{display:flex;font-family:Roboto,sans-serif;font-size:1em;height:100%;margin:0;padding:0;width:100%}.pace{animation:pace-theme-center-circle-spin 2s linear infinite;background-color:transparent!important;background-image:url(../css/img/Nepo_N.png);background-repeat:no-repeat;background-size:cover;bottom:0;color:transparent;font-size:2rem;font-weight:100;height:12rem;left:0;line-height:12rem;margin:auto;pointer-events:none;position:fixed;right:0;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:12rem;z-index:3000}@keyframes pace-theme-center-circle-spin{0%{transform:perspective(12rem) rotateY(0deg)}to{transform:perspective(12rem) rotateY(1turn)}}body.blocklyMinimalBody *{opacity:1!important;overflow:hidden;transform:none}#header{background-color:#fff;border:0;margin:0}#header>.navbar{padding-bottom:0}.navbar-toggler{border:none;padding:12px}.navbar-toggler:focus{box-shadow:none}.nav-item:hover,button#navbarButtonsHead:hover{background-color:#bacc1e;border:0;border-radius:2px}#head-navigation-tabs>li>a.active{border-bottom:4px solid #bacc1e}.blocklyToolboxDiv{top:0!important}#iconDisplayLogin,#iconDisplayRobotState{cursor:pointer;float:left;font-size:24px;height:24px;margin:0 6px;width:24px}.robertaLogo{background:url(../css/svg/logo-word.svg) no-repeat}.fraunhoferLogo{background:url(../css/img/iais_logo.gif) no-repeat}.googleLogo{background:url(../css/svg/Google_logo.svg) no-repeat;background-size:contain}.NRWMinLogo{background:url(../css/img/AK_Schule.png) no-repeat;background-size:contain}.imgFloatLeft{float:left;height:65px;margin:4px 16px 0 0;padding:0;width:210px}#language.nav>li>a{color:#333;margin:6px;padding:0}#language.nav>li>a:focus,#language.nav>li>a:hover{background-color:#fff}#logoShowStart img{display:block;height:60px;margin:18px;width:146px}.invisible{visibility:hidden}.hidden{display:none}.img-beta,.img-deprecated{left:10px;position:absolute;top:-5px;transform:rotate(-10deg);width:auto;z-index:5}.new{background-color:#fdc300;border-radius:5px 0;font-size:14px;left:0;max-width:-moz-fit-content;max-width:fit-content;padding:5px 10px;position:absolute;top:0;z-index:99}.menuTab{font-weight:700;text-transform:uppercase}.navigation-row{margin:0;width:100%}.scroller{background-color:#fff;cursor:pointer;float:left;font-size:24px;margin:0;padding:8px 2px 0 28px}#main-section{background:#e9ecef;bottom:0;left:0;margin:0;overflow:hidden;padding:0;position:absolute;right:0;top:96px}#headNavigation.show{max-height:335px;overflow-y:auto}.navbar-nav ul{max-height:calc(100vh - 100px);overflow:hidden;overflow-y:auto}.btn-default{background-color:#fff;border-color:#ccc;color:#333;margin-right:2px}.btn-default:hover{background-color:#ddd;border-color:#ccc}#blocklyDiv,#bricklyDiv{background-size:100%;height:100%;overflow:hidden;touch-action:none}.log{bottom:50px;margin:16px 68px 32px;overflow:auto;position:fixed;top:152px}.canvasSim{left:0;position:absolute;top:0}canvas.border{border:2px solid grey}#webotsDiv{height:100%}#canvasDiv,#webotsDiv{left:0;position:absolute;top:0;width:100%;z-index:1}#sliderDiv{cursor:col-resize;width:20px;z-index:11}#sliderBorder{background-color:silver;width:6px;z-index:8}.codeActive>pre{word-wrap:inherit;height:100%;width:100%}.fromRight{background-color:#d8d8d8;display:none;float:right;height:100%;position:relative;user-select:none;-webkit-user-select:none;-moz-user-select:none;width:0;z-index:10}#infoDiv.fromRight{background-color:#eee}.fromRight.rightActive{display:block;height:100%;overflow:hidden}#codeContainer{height:100%;overflow-y:auto}#codeContent{background-color:#eee;overflow-y:auto;padding-bottom:60px;padding-top:12px}#infoContent{background-color:#fff;border:10px solid #eee;border-top:none;height:inherit;overflow:auto;-webkit-user-select:text;-moz-user-select:text;user-select:text;width:inherit}#infoContent[data-placeholder]:before{color:#555;padding:0 12px}#infoToolbar{border:10px solid #eee}#legalDiv{background-color:#fff;overflow-y:scroll;padding-top:1.5rem}#legalDiv>:not(#legalDivHeader){-webkit-touch-callout:default;padding:1rem;-webkit-user-select:text;-moz-user-select:text;user-select:text}#legalDiv>#legalDivHeader{font-size:1.25em;text-align:center}#legalDiv>#legalDivHeader>a{padding:0 1rem}#helpDiv ul{display:table;list-style-type:none}#helpDiv li{display:table-row}#helpDiv li:before{display:table-cell;padding-right:6px}#helpContent{-webkit-touch-callout:none;background-color:#fff;height:100%;overflow-y:auto;padding:10px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}#helpContent h2,#helpContent h3{border-top:1px solid #f29400;padding-left:10px;padding-top:25px}#helpContent h4,#helpContent p{margin-left:8px;margin-right:12px}#helpContent h4{margin-top:18px}.selectedHelp{background-color:#f0f0f0}#rightMenuDiv{position:absolute;right:0;top:32px;z-index:9}#mbedContent,#valuesContent{background-color:#fff;border:2px solid #33b8ca;border-radius:2px;display:inline-block;padding:12px 14px 12px 12px}#valuesContent{min-width:330px;overflow-y:auto}.customDropdown{background-color:#fff;border:1px solid #333;border-radius:2px}.rightMenuButton{background:silver;border-radius:2px;height:40px;margin-bottom:6px;position:relative;width:40px;z-index:12}.rightMenuButton:before{border-bottom:5px solid transparent;border-right:6px solid #333;border-top:5px solid transparent;content:"";height:0;position:absolute;right:100%;top:14px;width:0}.rightMenuButton.rightActive{color:#e2001a}.rightMenuButton.rightActive:before{border-bottom:5px solid transparent;border-left:6px solid #333;border-top:5px solid transparent;right:-6px}.rightMenuButton:active,div.rightMenuButton:hover{cursor:pointer}.rightMenuButton>.typcn{font-size:24px;left:7px;position:relative;top:8px}#infoButton.notEmpty,#tutorialButton.rightMenuButton{background-color:#bacc1e}#infoButton.notEmpty:before,#tutorialButton.rightMenuButton:before{border-right:6px solid #bacc1e}.menu-icons{border:0;color:#fff;font-size:24px;line-height:24px;margin:0}#toastContainer{left:50%;position:absolute;top:0}#toastLeftContainer{left:-50%;margin:0;padding:0;position:relative;top:0}#toastLeftContainer span{background-color:#fff;color:#333;font-size:16px;padding:8px;white-space:nowrap;z-index:9999}#show-startup-message{z-index:1039}#show-startup-message #popup-robot-container{margin-left:100px;margin-right:100px}#show-startup-message .popup-robot{background-color:#fff;color:#333}#show-startup-message .popup-robot.robotSpecial{background-color:transparent;color:#000}#slick-container{background:#33b8ca}.slick-list{padding-bottom:12px!important;padding-top:12px!important}.slick-dots{bottom:inherit;top:160px}#show-startup-message .slick-slide{opacity:1;transform:scale(1);transition:all .3s ease-in-out}#show-startup-message .slick-slide.slick-center{transform:scale(1.2)}#show-startup-message .slick-prev{left:-100px;top:45%}#show-startup-message .slick-next{right:-100px;top:45%}#show-startup-message .slick-next:before,#show-startup-message .slick-prev:before{color:#000;font-size:25px}#show-startup-message .popup-robot a{bottom:20px;color:#000;font-size:25px;position:relative;right:75px}#show-startup-message .popup-robot.robotSpecial a{left:86px;top:20px}#show-startup-message .robot-info{font-size:24px;position:relative}#startPopupBack{bottom:50px;color:#333;font-size:36px;position:relative;text-decoration:none}#show-startup-message .modal-dialog{border:2px solid #33b8ca}.ok,.wait{color:#33b8ca}.error{color:#333}@keyframes blinker{0%{color:#f29400}to{color:#e2001a}}.busy{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:blinker;animation-name:blinker;-webkit-animation-timing-function:cubic-bezier(1,0,0,1);animation-timing-function:cubic-bezier(1,0,0,1)}.menuDisabled{background-color:#fff}.dropdown-toggle.disabled:focus,.dropdown-toggle.disabled:hover{background-color:#fff!important;background-image:none;cursor:default;text-decoration:none}.bottomLeftButtons{bottom:6px;display:flex}#simEditButtons,.bottomLeftButtons{left:12px;position:absolute;z-index:99}#simEditButtons{top:10px}#simEditButtons button span:before{font-size:36px}.simAddMarker span{display:inline-block;font-size:12px;min-width:16px}button#simCustomColorObject span.typcn:before{color:#fbed00}button#simCustomObstacle.typcn:before{color:#009ee3}.huebee__container{background:#e7e7e7;border-radius:2px;box-shadow:none;left:0;padding:24px 10px 10px;position:absolute;top:6px}.huebee__cursor{border:5px solid #fff;border-radius:2px;height:30px;width:30px}.huebee{transition:none}.huebee__close-button{background:none;border-radius:0;display:block;height:24px;position:absolute;right:0;top:0;width:24px}.huebee__close-button__x{stroke-width:2;stroke:#bbb}.huebee__close-button__x:focus,.huebee__close-button__x:hover{stroke:#333}.huebee__close-button:focus,.huebee__close-button:hover{background:#e7e7e7}#codeButtons{background-color:#eee;bottom:0;height:70px;left:12px;padding-top:10px;position:absolute;width:100%;z-index:99}.btn-group-vertical>.btn.simbtn{margin:8px 0}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-bottom:5px}.btn-group.open .dropdown-toggle{box-shadow:none}.tooltip>.tooltip-inner{background-color:#333}.tooltip>.tooltip-arrow{border-right-color:#333}.nav-tabs>li+li{margin:0}#toolboxDiv{-webkit-overflow-scrolling:touch}#toolboxDiv>.nav-tabs{border:0}#toolboxDiv>.nav-tabs li{border:none;text-align:center;width:50%}#toolboxDiv>.blocklyToolboxDiv{position:relative!important}#toolboxDiv>.nav-tabs li>a.active{background-color:#e9ecef;color:#333}#toolboxDiv>.nav-tabs li>a{background-color:silver;border:none;border-radius:0;color:#fff;margin:0;padding:6px 0}.blocklyFlyoutBackground{fill-opacity:.925!important}.head-navi-icons:before{margin-right:2px}.dropdown-menu:not(.editor){border-radius:2px}.dropdown-menu>li>a>span.kbd{bottom:.4em;float:right;font-size:.8em;position:absolute;right:20px}#head-navigation-configuration-edit .dropdown-menu>li>a,#head-navigation-program-edit .dropdown-menu>li>a{padding-right:70px;position:relative}.dropdown-menu>li:not(.disabled)>a:focus,.dropdown-menu>li:not(.disabled)>a:hover{background-color:#bacc1e!important}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#bbb}#tokenValue{text-transform:uppercase}#roberta{background-image:url(/css/img/Roberta_ears_up.png);background-repeat:no-repeat;background-size:contain;bottom:-12px;height:180px;position:absolute;right:-20px;width:160px}#version-info{font-size:24px;font-weight:500;position:absolute;right:60px;top:16px}.cover{background-color:#ddd;height:100%;left:0;position:fixed;top:0;width:100%;z-index:2000}.connector{fill:#bacc1e;margin-top:19px;position:absolute;right:5%;z-index:900}.border-dotted{border-right:1px dashed #afca04}.popupTitel{margin-bottom:10px;margin-top:20px;text-align:center}.popup-checkbox{color:#bbb;font-size:14px;padding:0 0 16px!important}.download-checkbox{color:#bbb;font-size:14px;padding-bottom:16px!important;padding-left:16px!important;width:100%}.download-checkbox input,.popup-checkbox input{margin-bottom:6px;margin-right:6px;position:relative;top:2px}.download-checkbox label,.popup-checkbox label{display:initial;font-weight:400}.download-checkbox ul{list-style:none}#download-instructions{list-style-type:none;margin:32px 16px 0;padding:0}#download-instructions li{font-size:20px;margin-bottom:48px;padding-left:2em;position:relative}#download-instructions .typcn-Roberta:before{left:0;padding-top:4px;position:absolute}#programLink a{color:#337ab7;text-decoration:underline}.clearer{clear:both}.simWindow{display:none;left:50px;position:absolute;top:200px;z-index:99}.simWindow#simValuesWindow button.close{position:absolute;right:14px;top:4px}.simWindow#simRobotWindow button.close{position:absolute;right:16px;top:4px;z-index:99999}#VariablesContent{height:300px;overflow:auto;width:auto}#simValuesContent label{display:inline-block;margin-left:10px;margin-right:6px;width:150px}#simValuesContent div>div{max-height:70vh;white-space:nowrap}#simValuesContent span{display:inline-block;padding:0 6px;width:60px}.bigNumber{color:#8fa402;font-size:large;font-weight:700}.simWindow .modal-dialog{margin:0;min-width:-moz-max-content;min-width:max-content;pointer-events:all;width:-moz-max-content;width:max-content}.simWindow text{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.simWindow div{width:100%}.modal-backdrop.in{opacity:.3}.modal-content{border:0;border-radius:2px}.modal-body{padding:0 16px}.modal-body.left-inner-addon{word-break:break-word}#startup-message-statustext h4{font-weight:500}.modal-footer,.modal-header{border:none;padding:16px 16px 20px;text-align:left}.modal-header{border-top-left-radius:inherit;border-top-right-radius:inherit}.modal-footer{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.form-control:focus,.form-select:focus{border:1px solid #afca04;box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none;-moz-transition:none;-webkit-transition:none}.modal-footer{justify-content:space-between}.with-devider{margin-top:10px}.btn-toolbar.editor{background-color:#eee;padding:10px 0 0}.btn-default.show,.btn-info{background-color:#afca04;border-color:#afca04}.btn.btn-link.btn-user{background-color:transparent;color:var(--bs-btn-color);padding:0;text-decoration:none}.btn.btn-link.btn-user:focus,.btn.btn-link.btn-user:hover,.btn.btn-link.btn-user:hover:focus{background-color:transparent;color:var(--bs-btn-hover-color);text-decoration:underline}.btn{border-radius:2px}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{background-color:#afca04;border-color:#afca04}a.btn.editor{align-items:center;display:flex}.btn .active:not(.editor,.start),.btn .focus:not(.editor,.start),.btn:active:focus:not(.editor,.start),.btn:active:not(.editor,.start),.btn:focus:not(.editor,.start),.btn:hover:not(.editor,.start),.open>.dropdown-toggle .btn:not(.editor,.start){background-color:#c7d92b;box-shadow:none;color:#fff;outline:none}.btn:not(.editor,.galleryLike,.start){background-color:#bacc1e;border:none;border-radius:2px;box-shadow:none;color:#fff;cursor:pointer;font-size:16px;margin-left:0;margin-right:16px}button.editor{background-color:#dedede;border-radius:2px}button.editor:hover{background-color:#eee}.open>.dropdown-toggle.simbtn.btn,.simbtn.btn.active,.simbtn.btn.focus,.simbtn.btn:active,.simbtn.btn:active:focus,.simbtn.btn:focus,.simbtn.btn:hover{background-color:#f29400}#simEditButtons>.typcn-chart-line-outline{fill:#bacc1e}.simKey:hover{cursor:pointer}.fixed-table-toolbar .btn:not(.start){background-color:#bacc1e;border:none;border-radius:2px;box-shadow:none;color:#fff;cursor:pointer;font-size:24px;height:48px;margin-left:0;margin-right:4px;width:48px}.fixed-table-toolbar button.btn:last-child{margin-right:0}.fixed-table-toolbar .btn:hover:not(.start){background-color:#c7d92b}.btn-group.pull-right>.btn:last-child{margin-right:0}table .typcn-chevron-left:before,table .typcn-chevron-right:before,table .typcn-flow-merge:before{display:inline-block;transform:rotate(-90deg)}table:not(#robotTable) [data-bs-toggle=collapse]:after{content:url("data:image/svg+xml;utf8,");float:right}.fixed-table-container thead th .both{background-image:url(../css/svg/arrow-unsorted.svg)}.fixed-table-container thead th .asc{background-image:url(../css/svg/arrow-sorted-up.svg)}.fixed-table-container thead th .desc{background-image:url(../css/svg/arrow-sorted-down.svg)}table:not(#robotTable) [data-bs-toggle=collapse].collapsed:after{transform:rotate(180deg)}.modal-body>.bootstrap-table{margin:0}.blbtn{background-color:#fff;border:1px solid #d8d8d8;border-radius:2px;box-shadow:none;color:#333;cursor:pointer;font-size:0;height:48px;margin-bottom:6px;margin-left:0;margin-right:2px;width:48px}.blbtn:hover{background-color:#bacc1e}.modal-footer .btn+.btn{margin-left:0;margin-right:0}.btn-close{--bs-btn-close-focus-shadow:0}.close:focus,.close:hover{color:#333;opacity:1}#popup-robot-main{visibility:hidden}#popup-robot-main.slick-initialized{visibility:visible}.robot-container{border:1px solid #ddd;border-radius:4px;cursor:pointer;display:inline-grid;height:88px;margin:20px;padding:13px 0;text-align:center;width:140px}.startupImages{margin-top:0;position:relative;top:50%}.robot-label{display:block;line-height:14px}.robot-icon{font-size:40px;position:relative;right:-16px}.typcn.robot-icon:before{margin:0}.bootstrap-tagsinput{border:10px solid #eee;color:#555;-webkit-hyphens:auto;hyphens:auto;overflow-x:auto;padding:4px 6px;white-space:nowrap;width:100%;word-break:break-word}.bootstrap-tagsinput .tag{background-color:#bbb;border-radius:.25em;color:#fff;display:inline;font-size:75%;font-weight:700;line-height:1;margin-right:2px;padding:.2em .6em .3em;text-align:center;vertical-align:baseline;white-space:nowrap}.dropdown-menu .typcn:before{margin-right:6px}#toolboxDiv>.nav-tabs .typcn:before{position:relative;top:1px}.blbtn.typcn:before{font-size:36px;margin-right:0}.bootstrap-table .typcn:before{margin-right:0}.bootstrap-table .no-records-found td{color:#333}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{background-color:#e9ecef}.input-typcn:before{font-size:22px;left:-1px;position:relative;top:4px}label.form-invalid{background:#ddd;background:hsla(0,0%,87%,.9);border-radius:2px;color:#e2001a;font-size:16px;font-weight:400;padding:6px;position:relative;width:100%;z-index:10}label.form-invalid:after{border:6px solid transparent;border-top-color:#e2001a;content:" ";height:0;margin-top:28px;pointer-events:none;position:absolute;right:10%;width:0;z-index:20}#div-login-forms .form-group{position:relative}.form-group{width:100%}.form-group .hint{background:#ddd;background:hsla(0,0%,87%,.9);border-radius:2px;color:#333;font-size:16px;margin-top:12px;padding:6px;position:relative;width:100%;z-index:11}.hint:before{border-color:transparent transparent #8fa402;border-style:solid;border-width:0 6px 6px;content:"";height:0;position:absolute;right:75%;top:-6px;width:0}.capitalLetters{text-transform:uppercase}.input-group-addon{background:#fff;border:1px solid #afca04;border-radius:2px;padding:6px 6px 0 10px}.inner-addon{position:relative}.inner-addon .typcn{color:#c7c7c7;font-size:20px;left:0;padding:0 6px;position:absolute}#programShareWith{margin-right:15px}input.shareLabelInput.form-control,select.shareLabelInput.form-control{margin:0}legend{margin-bottom:0}.progName:before{margin-right:0}.bootstrap-table,.table{--bs-table-color:#333}.bootstrap-table:not(#start .bootstrap-table),.table:not(#robotTable){cursor:pointer}.bootstrap-table a{color:#333;margin-left:4px;margin-right:4px;text-decoration:none}.bootstrap-table a.disabled{color:#bbb;pointer-events:none}.bootstrap-table .fixed-table-toolbar .float-left,.bootstrap-table .fixed-table-toolbar .float-right{margin-top:0}.bs-bars.float-left{width:100%}td.bs-checkbox{padding:14px 8px 0!important}.bootstrap-table a:focus,.bootstrap-table a:hover{color:#000;text-decoration:none}.bootstrap-table a>span{padding:0}.galleryTable{position:absolute}.galleryTable tbody{display:flex;flex-wrap:wrap;overflow-x:hidden;overflow-y:auto}.galleryTable tr>td{background-color:transparent}.galleryTable .typcn:before{color:#eee;font-size:80px;left:50%;margin-left:-40px;position:absolute;top:10px}a.bookmark.typcn:before{color:#39378b;font-size:34px;left:40px;opacity:.8;padding:16px;position:relative;top:16px;z-index:30}a.bookmark{border-radius:50%;display:block;height:66px;margin:0;position:absolute;right:0;top:0;width:66px}a.bookmark.typcn:hover:before{font-size:30px;opacity:1;padding:18px;top:18px}#start .nav-link{background:none;border-bottom:.1875rem solid rgba(57,55,139,0);color:rgba(0,0,0,.5);margin-right:1.25rem;padding:0 0 .625rem}#start .nav-link.active{border-bottom:.1875rem solid #39378b;color:#39378b;font-weight:700}#start .nav-link:hover{color:#39378b}#start .dropdown-menu{border-radius:5px}#start .dropdown-toggle.show:after{transform:rotate(180deg)}button.btnFilter.start{background-color:#fff;border:none;border-radius:5px!important;color:#39378b;display:inline-block;font-weight:700;margin-left:6px!important;padding:.9375rem;text-decoration:none}button.btnFilter.start:hover,button.filter.start.show{background:#39378b;color:#fff}#start .fixed-table-toolbar{min-height:74px}#start .galleryTable button.pick.start{border-radius:5px 0;float:right;margin:12px -9px -9px 0;padding:10px 50px 10px 15px}#start .galleryTable button.pick.start,button#more.start{background-color:#39378b;color:#fff;display:inline-block;position:relative;text-decoration:none}button#more.start{border-radius:5px;margin:0 0 20px;padding:10px;width:auto}#start div.start.typcn{position:relative}#start .galleryTable button.pick.start:before{font-size:24px;margin:0;position:absolute;right:0;transform:translate(0);transition-duration:.3s}#start .galleryTable button.pick.start:hover:before{transform:translate(5px);transition-duration:.3s}#start .galleryTable div.start.typcn:hover{background-color:red}#start .fixed-table-body,#start .fixed-table-container.fixed-height{border:none;height:auto!important;margin:0 -1.5em}#start .galleryTable.table{position:relative}#start .galleryTable td{background-color:#fff;border-radius:5px;color:#333}.table-hover>tbody>tr:hover>*{--bs-table-color-state:0;--bs-table-bg-state:0}a.page-link{--bs-pagination-active-bg:#bacc1e;--bs-pagination-active-border-color:#bacc1e}a.page-link:focus,a.page-link:hover{box-shadow:none}.galleryIcon.typcn:before{color:#fff;font-size:24px;font-weight:700;left:40px;position:relative;top:4px}.fixed-table-container.fixed-height.has-card-view{overflow:auto}span.card-view-title{min-width:auto!important}.tutorialIcon.typcn:before{color:#fff;display:inline-block;font-size:24px;left:0;margin-left:0;margin-right:12px;position:relative;top:0;width:1.5em}div.imgSol img,div.imgSol svg{max-width:100%;overflow:hidden}#galleryList .fixed-table-toolbar .pull-left{flex:1}#galleryList .pull-right.search{display:none}.listToolbar{display:flex;justify-content:space-between;position:absolute;top:10px}.filter,.form-control:not(#start .fixed-table-toolbar>.float-right>.form-control){background-color:#fff;border:1px solid #afca04;border-radius:2px;height:48px;padding-bottom:0;padding-top:0}.form-control:not(#start .fixed-table-toolbar>.float-right>.form-control){-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}#start .fixed-table-toolbar>.float-right>.form-control{border-color:#39378b;height:54px;margin-left:6px}.search>label{margin-left:6px;margin-top:12px;max-width:100%;white-space:nowrap}.search.float-right{max-width:calc(100% - 100px)}.cardViewName{font-size:24px;-webkit-hyphens:auto;hyphens:auto;margin-bottom:12px;margin-top:80px;max-height:34px;min-height:34px;overflow:hidden;text-overflow:ellipsis;width:100%;word-break:break-all}.cardViewName,.robotName{font-weight:700;text-align:center}.robotName{font-size:20px;max-height:52px;min-height:52px}.robotImage{cursor:pointer;height:0;padding-bottom:60%;position:relative;width:100%}.robotImage img{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}#start button.accordion-button{padding:6px 12px}#start label.form-check-label{margin-left:12px;margin-top:4px}.button,.button-big,.button-big--arrow,.button-big--primary:after,.button-big--quaternary:after,.button-big--secondary:after,.button-big--tertiary:after,.button-big.icon:after,.transition{transition:all .3s}h1,h2,h3,h4,h5{font-weight:700}h1{margin-bottom:30px}h1,h2{font-size:30px;line-height:40px}h2{margin-bottom:20px}h3{font-size:30px;line-height:40px;margin-bottom:30px}h4,h5{font-size:20px;line-height:30px}.tint{color:#fff;display:inline-block;margin:0 -10px;mix-blend-mode:multiply;padding:10px 20px}.tint--primary{background:#39378b;position:relative;top:5px;transform:rotate(1deg)}.tint--secondary{background:#fdc300;transform:rotate(-1deg)}.tint--tertiary{background:#33b8ca;transform:rotate(-2deg)}.tint--quaternary{background:#88bce2;position:relative;top:-8px;transform:rotate(1deg)}p{font-size:16px;line-height:24px;margin-bottom:15px}p:last-child{margin-bottom:0}p.teaser{font-size:20px;line-height:30px}p.teaser:last-child{margin-bottom:15px}p.teaser+.button{margin-top:20px}a{color:#39378b;text-decoration:underline}@media (hover:hover){a:hover{cursor:pointer;text-decoration:none}}.button-big--arrow,.button-big--primary:after,.button-big--quaternary:after,.button-big--secondary:after,.button-big--tertiary:after,.button-big.icon:after{background-repeat:no-repeat;background-size:contain;bottom:15px;content:"";height:30px;position:absolute;right:20px;width:30px}@media (hover:hover){.button-big--arrow:hover,.button-big--primary:hover:after,.button-big--quaternary:hover:after,.button-big--secondary:hover:after,.button-big--tertiary:hover:after,.button-big.icon:hover:after{right:15px}}.button{border-radius:5px;display:inline-block;font-weight:700;padding:15px;text-decoration:none}.button--light{background:#fff;color:#39378b}.button.show{background:#39378b;color:#fff}@media (hover:hover){.button:hover{background:#39378b;color:#fff}}.button-big{border-radius:5px;color:#000;display:flex;flex-direction:column;height:100%;padding:10px 80px 10px 15px;text-decoration:none}@media (min-width:768px){.button-big{padding:15px 15px 50px}}@media (min-width:992px){.button-big{padding:15px 80px 15px 20px}}.button-big--primary{background:rgba(57,55,139,.1);border:1px solid rgba(57,55,139,.5);position:relative}.button-big--primary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--primary:hover{background:rgba(57,55,139,.2);border:1px solid #39378b}}.button-big--primary.icon{background:#39378b}.button-big--secondary{background:rgba(253,195,0,.1);border:1px solid rgba(253,195,0,.5);position:relative}.button-big--secondary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--secondary:hover{background:rgba(253,195,0,.2);border:1px solid #fdc300}}.button-big--secondary.icon{background:#fdc300}.button-big--tertiary{background:rgba(51,184,202,.1);border:1px solid rgba(51,184,202,.5);position:relative}.button-big--tertiary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--tertiary:hover{background:rgba(51,184,202,.2);border:1px solid #33b8ca}}.button-big--tertiary.icon{background:#33b8ca}.button-big--quaternary{background:rgba(136,188,226,.1);border:1px solid rgba(136,188,226,.5);position:relative}.button-big--quaternary:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big--quaternary:hover{background:rgba(136,188,226,.2);border:1px solid #88bce2}}.button-big--quaternary.icon{background:#88bce2}.button-big.icon{border:none;color:#fff;padding:15px 80px 10px 15px}@media (min-width:992px){.button-big.icon{padding:40px 80px 40px 40px}}.button-big.icon:after{background-image:url('data:image/svg+xml;charset=utf-8,')}@media (hover:hover){.button-big.icon:hover{box-shadow:0 20px 50px rgba(0,0,0,.05)}}.button-big.icon svg{fill:#fff;align-self:flex-start;height:25px;margin-bottom:20px;width:auto}section{width:100%}.section--white{background:#fff}.section--light{background:#e9ecef}#start{background:#fff}#startup-message-statustext{background:#39378b;border-radius:5px;bottom:50px;box-shadow:0 0 20px rgba(0,0,0,.25);color:#fff;max-width:450px;position:absolute;right:50px;width:100%;z-index:999}#startup-message-statustext h4,#startup-message-statustext p{padding:20px}.nepo,.nepo:before{display:inline-block}.nepo:before{background-image:url(img/nepo.svg);background-position:0 100%;background-repeat:no-repeat;background-size:contain;content:"";height:20px;margin-right:5px;width:85px}.teaser-news{background:#e9ecef;border-radius:5px;display:flex;padding:15px}@media (min-width:992px){.teaser-news{padding:40px}}.teaser-news--header{font-size:20px;font-weight:700;line-height:30px;margin-bottom:10px}.teaser-news--body h3{color:#39378b}.teaser-news--image{height:auto;width:100%}#start footer{border-top:1px solid rgba(0,0,0,.2);padding-bottom:96px;width:100%}#start footer img{width:100%}#start footer .nav-link,#start footer p{font-size:14px;line-height:20px;margin-right:0}#start footer .nav-item,#start footer .nav-item:hover{background:none}#start footer .nav-link{color:#6c757d;padding:5px 0}@supports (background:-webkit-named-image(i)){.flexbox-fix{display:flex}}.galleryTable tr,.galleryTable.table{border:.75em solid #e9ecef;border-collapse:collapse}#share-with-gallery .galleryTable tr,#share-with-gallery .galleryTable.table{border-color:#fff}div.galleryLike{bottom:-20px;color:#fff;text-align:center}div.galleryLike a>span{color:#fff}button.galleryLike.btn{border:2px solid #fff;border-radius:2px;color:#fff;opacity:.75}button.galleryLike.btn:active,button.galleryLike.btn:focus,button.galleryLike.btn:focus:active,button.galleryLike.btn:hover{background-color:inherit;font-weight:600;opacity:1}div.cardViewDescription{-webkit-line-clamp:2;margin-bottom:12px;min-height:42px}div.cardViewDescription,div.cardViewInfo{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;position:relative;text-overflow:ellipsis;word-break:break-word}div.cardViewInfo{-webkit-line-clamp:1}div.cardViewLabel{display:inline-block;min-width:30%}.galleryDescription:before,.tutorialOverview:before{bottom:0;content:"...";position:absolute;right:0}.galleryDescription:after,.tutorialOverview:after{content:"";height:2.5em;margin-top:-.3em;position:absolute;right:0;width:1em}.galleryDescription.color0:after,.tutorialOverview.color0:after{background:#33b8ca}.galleryDescription.color1:after,.tutorialOverview.color1:after{background:#ebc300}.galleryDescription.color2:after,.tutorialOverview.color2:after{background:#005a94}.galleryDescription.color3:after,.tutorialOverview.color3:after{background:#179c7d}.galleryDescription.color4:after,.tutorialOverview.color4:after{background:#f29400}.galleryDescription.color5:after,.tutorialOverview.color5:after{background:#e2001a}.galleryDescription.color6:after,.tutorialOverview.color6:after{background:#eb6a0a}.galleryDescription.color7:after,.tutorialOverview.color7:after{background:#8fa402}.galleryDescription.color8:after,.tutorialOverview.color8:after{background:#bacc1e}.galleryDescription.color9:after,.tutorialOverview.color9:after{background:#9085ba}.galleryDescription.color10:after,.tutorialOverview.color10:after{background:#ff69b4}.galleryDescription.color11:after,.tutorialOverview.color11:after{background:#df01d7}.galleryAuthor{height:22px;overflow:hidden;word-break:break-all}.galleryLike.typcn:before{color:#fff;font-size:16px;position:inherit}.galleryTags{background-color:inherit;border:none;box-shadow:none;height:34px;line-height:34px;overflow:hidden;padding:0;text-decoration:none;white-space:normal}.galleryTags input{height:0}.galleryTags>.tag{background-color:#bbb;line-height:34px;white-space:normal}.galleryTable td{border:none!important;color:#fff;position:relative;width:100vw}#galleryPreview tr{width:100%}.dataTables_wrapper{margin:0 68px}#confList table tbody tr.selected,#confList table tbody tr:hover td:not(td:last-child),#progList .fixed-table-container tbody .selected td,#progList table tbody tr.selected,#progList table tbody tr:hover td:not(td:last-child),#relationsList table tbody tr.selected,#relationsList table tbody tr:hover,#userGroupList .fixed-table-container tbody .selected td,#userGroupList table tbody tr.selected,#userGroupList table tr:hover td:not(td:last-child),#userGroupMemberList .fixed-table-container tbody .selected td,#userGroupMemberList table tbody tr.selected{background-color:#bacc1e}a.delete:hover{color:#e2001a}a.gallery:hover,a.load:hover,a.share:hover{color:#bacc1e}.float-right.search.btn-group{max-width:calc(100% - 150px)}input[type=range]{-webkit-appearance:none;margin:10px 0;width:100%}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{animate:.2s;background:#bacc1e;border:0 solid #000;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:8px;width:100%}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:#fff;border:1px solid #333;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:24px;margin-top:-8.5px;width:12px}input[type=range]:focus::-webkit-slider-runnable-track{background:#bacc1e}input[type=range]::-moz-range-track{animate:.2s;background:#bacc1e;border:0 solid #000;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:8px;width:100%}input[type=range]::-moz-range-thumb{background:#fff;border:1px solid #333;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:24px;width:12px}input[type=range]::-ms-track{animate:.2s;background:transparent;border-color:transparent;color:transparent;cursor:pointer;height:8px;width:100%}input[type=range]::-ms-fill-lower,input[type=range]::-ms-fill-upper{background:#bacc1e;border:0 solid #000;border-radius:4px;box-shadow:0 0 0 #000}input[type=range]::-ms-thumb{background:#fff;border:1px solid #333;border-radius:2px;box-shadow:0 0 0 #000;cursor:pointer;height:24px;width:12px}input[type=range]:focus::-ms-fill-lower,input[type=range]:focus::-ms-fill-upper{background:#bacc1e}.table-dark{--bs-table-bg:#898989;--bs-table-border-color:none;text-transform:uppercase}#confList table,#progList table,#show-relations table,#showMultipleSimPrograms table thead{margin:0;width:100%}.updatedRow{color:#bacc1e}.table>tbody>tr>td,.table>tbody>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:9px}.dataTables_scrollBody{border-bottom:none!important}#confList .configurations,#progList .programs,#relationsList .relations{border-bottom:1px solid #eee}#relationsListing{margin-bottom:15px}#confList>h2,#logList>h2,#progList>h2{margin-left:68px}#create-user-group .modal-body{margin-bottom:1em}#userGroupList .btn-group>.btn:not(.dropdown-toggle),#userGroupMemberList .btn-group>.btn:not(.dropdown-toggle){border-radius:2px}#userGroupMemberTable .edit-member-name:not(.active),#userGroupMemberTable .member-name:not(.active){display:none}#userGroupMemberTable .btn{border:none;display:inline-block;font-size:16px;height:calc(1.25em + 12px);margin-right:0;vertical-align:top}#userGroupMemberTable.table-hover>tbody>tr:hover{background-color:transparent}#userGroupMemberTable .btn:active,#userGroupMemberTable .btn:focus{box-shadow:none;outline:none}#userGroupMemberTable .member-name-column{display:inline-block;margin:-8px;padding:8px;position:relative}#userGroupMemberTable tr.selected .member-name-column.active{background-color:hsla(0,0%,100%,.5)}#userGroupMemberTable .member-name{display:inline-block;font-size:16px;line-height:1.25;margin-left:16px;padding:7px 0}#userGroupMemberTable .edit-member-name,#userGroupMemberTable .edit-member-name form{display:inline-block}#userGroupMemberTable .edit-member-name form{margin:0;padding:0}#userGroupMemberTable .edit-member-name form label.form-invalid{bottom:0;left:0;margin-bottom:0;position:absolute;right:0;transform:translateY(100%)}#userGroupMemberTable .edit-member-name form label.form-invalid:after{border-bottom-color:red;border-top-color:transparent;margin-top:0;right:25%;top:0;transform:translateY(-100%)}#userGroupMemberTable .edit-member-name input.form-control{font-size:16px;line-height:1.25;margin:0;padding:4px 12px 4px 15px}#userGroupMemberTable .edit-member-name .btn.iais-loading-spin:before{animation:iais-loading-spin 1.2s linear infinite;display:inline-block}#simEditButtons>.btn-group{height:48px;vertical-align:top;width:48px}#simEditButtons>.btn-group.open button{background-color:#e7e7e7}#simEditButtons>.btn-group>.dropdown-menu{margin-top:6px;min-width:48px;width:48px}#simEditButtons>.btn-group>.dropdown-menu>li>a{font-size:28px;height:35px;padding-left:5px;padding-right:0;text-align:center;text-decoration:none}.simChangeObject.disabled{color:#bbb;cursor:not-allowed}#simControl.typcn-media-stop,#simStop{color:#e2001a!important}#simStop.disabled{color:#f6b3b9!important;cursor:not-allowed}.disabled a,li.disabled{color:#bbb;cursor:not-allowed;pointer-events:none}.disabled :hover,.disabled:hover{background:inherit}#simButtons>.debug{color:#1c5a94}.typcn-media-play-outline.rotated:before{display:inline-block;transform:rotate(-90deg)}@keyframes iais-loading-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.pull-none .pull-right{margin-left:3px}.pull-none .pull-left{margin-right:3px}@media only screen and (max-width:992px){#main-section{top:60px}#logoShowStart img{height:44px;margin-top:8px;width:auto}#head-navigation-tabs>li>a.active{border-bottom:none}#head-navigation{padding-bottom:8px}#roberta{bottom:-6px;height:90px;right:-10px;width:80px}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 36px}.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:inherit}.modal-dialog.bigModal{min-width:300px;width:80%}#head-navigation-tabs li{float:none;overflow:hidden;width:auto}.log{margin:16px}.dataTables_wrapper{margin:0 16px}#confList>h2,#logList>h2,#progList>h2,#relationsList>h2{margin-left:16px}.navbar-fixed-bottom{border:0;margin-bottom:0;padding:16px}.simWindow{left:6px;top:60px}.border-dotted{border-right:0}}img.img-responsive{height:140px;margin:0 auto}@media only screen and (max-width:768px){#show-startup-message .slick-prev{left:-25px}#show-startup-message .slick-next{right:-25px}#show-startup-message #popup-robot-container{margin-left:25px;margin-right:25px}}@media only screen and (max-width:480px){#show-startup-message .slick-slide.slick-center{transform:scale(1)}.robot-container{margin:20px 8px}}.enjoyhint_close_btn{border:2px solid #bacc1e}.enjoyhint_close_btn:active,.enjoyhint_close_btn:hover{background:#c7d92b}@media print{div#show-startup-message{display:none!important}svg.blocklySvg{overflow:visible}.nav,.navbar{display:block}.headNavigationTabs{margin-top:59px;z-index:1}.navbar-collapse{padding-left:10px;padding-right:10px}.collapse{display:block;visibility:visible}#blocklyDiv{border:none}div#simButtonsCollapse{display:none}.blocklyToolboxDiv{display:none!important}.blocklyMainBackground{stroke:none!important}#rightMenuDiv,g.blocklyButtons{display:none}.blocklyMainBackground{stroke:none}a#tabConfiguration{display:none}.nav-tabs>li{width:100%}#headNavigationTabs{border:none}#head-navigation-tabs>li>a.active{border-bottom:2px solid #000}g.blocklyBlockCanvas{transform:translate(-200px,-50px)}div#releaseInfo{display:none}}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:inherit!important}#tutorialRoberta{background-image:url(../css/svg/Roberta_zwinkernd.svg);background-repeat:no-repeat;background-size:200px;bottom:-15%;height:200px;position:absolute;right:-5%;width:200px}.tutorialLevelStars{position:relative}.tutorialLevel.typcn:before{color:#fff;display:table-cell;font-size:24px;left:0;position:relative;top:0}#tutorialOverview .modal-dialog{border:2px solid #33b8ca;font-size:16px}#tutorial-navigation,#tutorialEnd{display:none}#tutorial-navigation ul{margin:16px}ul#tutorial-close{float:right}#tutorialEnd a:before{font-size:1.5em;line-height:42px}#tutorial-close,#tutorial-header,.step{color:#333}#tutorial-navigation li{text-align:center}#tutorial-navigation li:last-child a:before{position:absolute;right:3px;top:3px}#tutorial-navigation li.step{background:#eaf0bb;float:left;height:48px;list-style:none;padding:0;text-align:center}#tutorial-navigation li.step.active{background:#bacc1e}#tutorial-navigation li a{box-sizing:border-box;color:inherit;display:inline-block;float:left;font-size:24px;font-weight:700;height:48px;margin:0 0 0 -15px;padding:6px 8px 6px 16px;text-decoration:none;width:48px}#tutorial-navigation li:first-child a{margin-left:0;width:48px}#tutorial-navigation li.step:after{background-image:url(../css/svg/step_connector.svg);content:" ";display:inline-block;height:48px;width:17px}#tutorial-navigation li.step.last:after{background-image:url(../css/svg/step_connector_last.svg)}#tutorial-navigation li.step.active:after{background-image:url(../css/svg/step_connector_active.svg)}#tutorial-navigation li.step.preActive:after{background-image:url(../css/svg/step_connector_before_active.svg)}#tutorial-navigation li.step.last.active:after{background-image:url(../css/svg/step_connector_active_last.svg)}#tutorial-navigation .navbar-nav>.active>a,#tutorial-navigation .navbar-nav>li>a:hover{background-color:transparent;color:#333}#tutorialNavs{left:60px;position:relative}#tutorial-navigation a.typcn.typcn-delete{background:#fff;border:6px solid #fff;color:#333;font-size:36px;position:absolute;text-decoration:none;top:24px}#tutorial-header{height:92px;line-height:76px;margin:0;overflow:hidden;vertical-align:middle}#tutorialOverview>.modal-backdrop.fade.in{opacity:.6}#tutorialDiv.fromRight{background-color:#eee}#tutorialContent{background-color:#fff;font-size:16px;height:100%;margin:10px;overflow-y:auto;padding:16px}#tutorialContent .tip{list-style-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzAiIHdpZHRoPSIzMiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMxYTFhMTh9LmNscy0ye2ZpbGw6I2ZmZn08L3N0eWxlPjwvZGVmcz48ZyB0cmFuc2Zvcm09InNjYWxlKC4xKSIgaWQ9IkViZW5lXzIiIGRhdGEtbmFtZT0iRWJlbmUgMiI+PGcgaWQ9IkViZW5lXzEtMiIgZGF0YS1uYW1lPSJFYmVuZSAxIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMDQuNDUgMTgyLjYxYTIxLjE5IDIxLjE5IDAgMSAxIDYuMjEtMTUgMjEuMTggMjEuMTggMCAwIDEtNi4yMSAxNW0yLjcxLTMyLjY4YTI1IDI1IDAgMSAwIDUuNDMgOC4xMiAyNS4wOSAyNS4wOSAwIDAgMC01LjQzLTguMTIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zMTYgMTYuN2ExLjc1IDEuNzUgMCAwIDEtLjk0LjIzaC0yMy42M3YtMy41OEgzMTVhMS43OSAxLjc5IDAgMCAxIDEgMy4zNW0tMzIuMjEtMTBhOS4xIDkuMSAwIDAgMC0xLjgtLjMxSDI1OC41M2E3LjkzIDcuOTMgMCAwIDEgNC0yLjM1IDExLjA3IDExLjA3IDAgMCAxIDIuODYtLjJoMTQuNzhhNy43NiA3Ljc2IDAgMCAxIDEuMzIuMiA4IDggMCAwIDEgNC40IDIuODQgOC4xMyA4LjEzIDAgMCAxIC44NiAxLjM3IDguNjEgOC42MSAwIDAgMC0zLTEuNTRtMi4xMSAxNi43MmE3Ljk0IDcuOTQgMCAwIDEtNC40MyAyLjggMTEuMTkgMTEuMTkgMCAwIDEtMi44Ni4yaC0xNC43NmE3LjI2IDcuMjYgMCAwIDEtMS4zMi0uMiA3LjkyIDcuOTIgMCAwIDEtNC0yLjMzaDIyLjM5YTExLjUxIDExLjUxIDAgMCAwIDEuNjktLjA5IDguNjQgOC42NCAwIDAgMCAxLjc4LS40NCA4LjU0IDguNTQgMCAwIDAgMi40Mi0xLjM3IDcuMzEgNy4zMSAwIDAgMS0uODkgMS40bS0yOS40Ny01di02LjYyYTggOCAwIDAgMSAuMTYtMS41NmgyMy44M2E3LjQ3IDcuNDcgMCAwIDEgMi4zMi4xOCA0LjkyIDQuOTIgMCAwIDEgLjM1IDkuMzYgNC44NiA0Ljg2IDAgMCAxLTEgLjI1IDcuMzcgNy4zNyAwIDAgMS0xLjE3IDBoLTI0LjMzYTggOCAwIDAgMS0uMTYtMS42Nm0tMy43MSAxLjY2aC00Ny40OGwtNC45LTkuODRoNTIuMzhhMTEuOTQgMTEuOTQgMCAwIDAtLjEyIDEuNTZ2Ni42N2ExMS42IDExLjYgMCAwIDAgLjExIDEuNjZtLTg3LjkxIDI1Ljc3YTM3LjExIDM3LjExIDAgMCAwLTE4LjQ0LTEwLjk0Yy0uODEtLjItMS42NC0uMzctMi40Ny0uNTFsNTEuNDUtMjUuNjFMMjA0IDI2LjI4Wm0zMC41NyAxMzIuOTVhMjkuNSAyOS41IDAgMCAxLS4zMSAzLjUxIDIxLjM0IDIxLjM0IDAgMCAxLTUuODQgMTIuMjcgMjAuODUgMjAuODUgMCAwIDEtMTIuNDUgNS40NCAzNC4xOCAzNC4xOCAwIDAgMS0zLjU2LjIzaC01NC42di02LjA2Yy4yNC0uMjYuNDYtLjUzLjctLjhoNDVjMS4xIDAgMi4zMSAwIDMuNDktLjA4YTI5IDI5IDAgMCAwIDMuNTctLjQzIDIzLjA5IDIzLjA5IDAgMCAwIDYuOTItMi40MSAxOC42OSAxOC42OSAwIDAgMCA1LjczLTQuODUgMjEuMDYgMjEuMDYgMCAwIDAgMy40My02LjUyIDI2Ljg0IDI2Ljg0IDAgMCAwIDEuMjktNy4xM1YzOC4ybDYuNjItMy4yOXYxNDMuODdtLTc3Ljg2IDEwLjc1aC0uMzd2LjQ3YTM2Ljc4IDM2Ljc4IDAgMCAxLTIuNSAyLjc5IDM2LjUgMzYuNSAwIDEgMSAyLjg3LTMuMjZNNjQuMTUgMjYzLjJ2LTY1LjM4YTM5LjMyIDM5LjMyIDAgMCAwIDUwLjYxIDB2NjUuMzhINjQuMTVabTY1IDMuODNhMzAuNzEgMzAuNzEgMCAwIDEgMzAuMzUgMjUuNzFjLjEzLjc5LjIzIDEuNTguMyAyLjM4bC4wNS43NUgxOS4wOHYtLjM3bC4wNS0uNmEzMC43NyAzMC43NyAwIDAgMSAyOC40NC0yNy44Yy44My0uMSAxLjYxLS4xIDIuNDMtLjFoNzkuMTNaTTUwLjA5IDE2Ni40NmE2MC40MSA2MC40MSAwIDAgMS0yNC45LTEwNC44NUEzNi41MiAzNi41MiAwIDAgMCAyNCA3MC44NmEzNyAzNyAwIDAgMCAyOC4xNyAzNiAzNy40MSAzNy40MSAwIDAgMCA2LjA3IDFjMSAuMDggMi4wNi4xIDMuMDYuMWg3NS44OGMxIDAgMiAwIDMuMDYtLjFhMzcuNDIgMzcuNDIgMCAwIDAgNi4wNy0xIDM1LjM4IDM1LjM4IDAgMCAwIDQuNTMtMS40M3Y2MC4zMWgtMjIuMDNhMzkuMzkgMzkuMzkgMCAwIDAtNzguNzMuNzVtMTM0Ljc5IDUuMzFhMjAuMTggMjAuMTggMCAwIDEtMy44NyAxMS40MyAxNC44MyAxNC44MyAwIDAgMS00LjUzIDMuODUgMTguOTIgMTguOTIgMCAwIDEtNS43NiAyIDI2IDI2IDAgMCAxLTMuMTIuMzljLTEuMDUuMDctMi4wOS4wNy0zLjI0LjA2aC00Mi4xYTM5LjE2IDM5LjE2IDAgMCAwIDYuNTktMjBoMjUuODh2LTY1Ljg3YTM3IDM3IDAgMCAwIDEyLjU4LTU0LjhsMTcuNi04Ljc2djEzMS42N1ptLTE1MC0xMjEuNGEzMy4xNiAzMy4xNiAwIDAgMSAyMy42OC0xMi42NmMuOTItLjA3IDEuODMtLjA5IDIuNzctLjFoNzUuODljLjk1IDAgMS44NSAwIDIuNzcuMWEzMy4yMiAzMy4yMiAwIDAgMSA1LjQ0IDY1LjM4IDM0IDM0IDAgMCAxLTUuNDIuODhjLS45Mi4wNy0xLjgyLjA5LTIuNzcuMDloLTc1LjljLTEgMC0xLjg1IDAtMi43Ny0uMDlhMzMuOTQgMzMuOTQgMCAwIDEtNS40NC0uODcgMzMuMjMgMzMuMjMgMCAwIDEtMTguMi01Mi43NG0yODIuOTQtNDAuMTVhNS42NSA1LjY1IDAgMCAwLTIuODYtLjcyaC0yMy44YTExLjc2IDExLjc2IDAgMCAwLTguNzgtOS4xOSAxMS44OSAxMS44OSAwIDAgMC0yLS4zaC0xNi43NmExMi4yIDEyLjIgMCAwIDAtMiAuMjggMTEuNzQgMTEuNzQgMCAwIDAtNi41NiA0LjE0IDExLjI0IDExLjI0IDAgMCAwLTEuMjUgMS45NGgtNTUuNDRMMTk3IDMuNjRsLTYwLjUxIDMwLjEzSDYxLjMzYy0xIDAtMiAwLTMuMDYuMUEzNyAzNyAwIDAgMCAzMS45MSA0OGEzNi4yMiAzNi4yMiAwIDAgMC00LjQzIDcuMjNsLS4xMS0uMTVhNjQuMjYgNjQuMjYgMCAwIDAgMjIuOCAxMTUuMzIgMzkuMTQgMzkuMTQgMCAwIDAgMTAuMTYgMjMuNzV2NjlINTBjLS44OCAwLTEuNzkgMC0yLjY4LjA5YTM0LjU0IDM0LjU0IDAgMCAwLTMyIDMxLjI2bC0uMDYuNjctLjA1LjkxYzAgLjg0IDAgMS42OC0uMDUgMi41M3YuOTRjMCAuMDguMDUuMDYuMS4wNmgxNDguNDFjLjA3IDAgLjA5IDAgLjA4LS4wOHYtNC43OWMtLjA3LS45LS4xOS0xLjc5LS4zNC0yLjY4YTMzLjg0IDMzLjg0IDAgMCAwLTEuMjktNS4yNCAzNC42MSAzNC42MSAwIDAgMC0zMi44My0yMy42N2gtMTAuN1YyMDRoNTQuNjVhMzkuNDUgMzkuNDUgMCAwIDAgNC0uMjUgMjguNzEgMjguNzEgMCAwIDAgNy44LTIgMjEuODEgMjEuODEgMCAwIDAgNi44Ni00LjUgMjIuNDYgMjIuNDYgMCAwIDAgNC43LTYuNzEgMjguNDcgMjguNDcgMCAwIDAgMi4yNy03LjczIDMyLjI2IDMyLjI2IDAgMCAwIC4zNC00VjE3Ny4xNWMwLS4wNiAwIDAgMCAwVjMzbDEwLTUtMi4wNS00LjEyaDQ2Ljc0YTEwLjcgMTAuNyAwIDAgMCAxLjE4IDEuODUgMTEuNzggMTEuNzggMCAwIDAgNi41MiA0LjIxIDExLjUgMTEuNSAwIDAgMCAyIC4yOWgxNi44NWExMS41NCAxMS41NCAwIDAgMCAyLS4yOCAxMS43NiAxMS43NiAwIDAgMCA4Ljg5LTkuMjFIMzE1YTUuNjIgNS42MiAwIDAgMCAyLjgyLTEwLjUyIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjcuOTQgOTYuMjZBMjQuNzYgMjQuNzYgMCAxIDEgOTIuNyA3MS40OWEyNC43NiAyNC43NiAwIDAgMS0yNC43NiAyNC43NyIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQxLjQyIDcxLjVBMjYuNTEgMjYuNTEgMCAwIDEgNjcuOTQgNDVhMjYuNTEgMjYuNTEgMCAwIDEgMjYuNTEgMjYuNUEyNi41MSAyNi41MSAwIDAgMSA2Ny45NCA5OHYtMy41YTIzIDIzIDAgMCAwIDIzLTIzIDIzIDIzIDAgMCAwLTIzLTIzIDIzIDIzIDAgMCAwLTIzIDIzIDIzIDIzIDAgMCAwIDIzIDIzVjk4YTI2LjUxIDI2LjUxIDAgMCAxLTI2LjUyLTI2LjVaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNjEgNjQuNTlhOS43NiA5Ljc2IDAgMSAxLTIuODYgNi45IDkuNzggOS43OCAwIDAgMSAyLjg2LTYuOU02Ny45NCA4NWExMy41IDEzLjUgMCAxIDAtOS41NS00IDEzLjQ4IDEzLjQ4IDAgMCAwIDkuNTUgNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY3Ljk0IDc3LjY4YTYuMjkgNi4yOSAwIDAgMCAxLjY2LTEyLjM2djdoLTMuMzJ2LTdhNi4yOSA2LjI5IDAgMCAwIDEuNjYgMTIuMzYiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMzAuNyA5Ni4yNmEyNC43NiAyNC43NiAwIDEgMSAyNC43Ni0yNC43NiAyNC43NiAyNC43NiAwIDAgMS0yNC43NiAyNC43NiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNC4xOSA3MS40OUEyNi41MSAyNi41MSAwIDAgMSAxMzAuNyA0NWEyNi41MSAyNi41MSAwIDAgMSAyNi41MSAyNi41MUEyNi41MSAyNi41MSAwIDAgMSAxMzAuNyA5OHYtMy41YTIzIDIzIDAgMCAwIDIzLTIzIDIzIDIzIDAgMCAwLTIzLTIzIDIzIDIzIDAgMCAwLTIzIDIzIDIzIDIzIDAgMCAwIDIzIDIzVjk4YTI2LjUyIDI2LjUyIDAgMCAxLTI2LjUyLTI2LjUyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEyMy44IDY0LjU5YTkuNzcgOS43NyAwIDEgMS0yLjg2IDYuOSA5Ljc4IDkuNzggMCAwIDEgMi44Ni02LjlNMTMwLjcgODVhMTMuNSAxMy41IDAgMSAwLTkuNTUtNCAxMy40NyAxMy40NyAwIDAgMCA5LjU1IDQiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMzAuNyA3Ny42OGE2LjI5IDYuMjkgMCAwIDAgMS42Ni0xMi4zNnY3SDEyOXYtN2E2LjI5IDYuMjkgMCAwIDAgMS42NiAxMi4zNiIvPjwvZz48L2c+PC9zdmc+)}#tutorialContent ul{list-style-image:none}#tutorialContent a{color:#f29400;font-weight:700;text-decoration:none}.quiz.continue,div#helpDiv{margin-top:24px}.quiz.continue{border-top:1px solid #eee;padding-top:10px;text-align:right}.quiz.footer,p.quiz{margin-top:16px}.quiz.footer>.btn.right{margin-left:16px}.quiz.answer{cursor:pointer;display:block;margin-top:16px;padding-left:34px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.quiz.answer input{cursor:pointer;opacity:0;position:absolute}.checkmark{background-color:#eee;border-radius:2px;height:25px;left:2px;position:absolute;top:2px;width:25px}.quiz.answer input:checked~.checkmark,.quiz.answer:hover input~.checkmark{background-color:#ccc}.quiz.answer>.checkmark:after{content:"";display:none;position:absolute}.quiz.answer input:checked~.checkmark:after{display:block}.quiz.answer>.checkmark:after{border:solid #fff;border-width:0 3px 3px 0;height:14px;left:10px;top:5px;transform:rotate(45deg);width:6px}label.quiz.answer{border-radius:4px;padding:6px 10px 6px 36px}label.quiz.answer.correct{background-color:#c7d92b;border:2px solid #c7d92b;padding:4px 8px 4px 34px}label.quiz.answer.fail{border:2px solid #e2001a;padding:4px 8px 4px 34px}#welcomeHaribo{z-index:9999}#welcomeHaribo .modal-dialog{width:40vw}#simModal .fixed-table-header{background-color:#898989;color:#fff}#simModal .fixed-table-header table{color:#fff}.lds-ellipsis{display:inline-block;height:100px;position:relative;width:64px}.lds-ellipsis div{animation-timing-function:cubic-bezier(0,1,1,0);background:#333;border-radius:50%;height:11px;position:absolute;top:27px;width:11px}.lds-ellipsis div:first-child{animation:lds-ellipsis1 .6s infinite;left:6px}.lds-ellipsis div:nth-child(2){animation:lds-ellipsis2 .6s infinite;left:6px}.lds-ellipsis div:nth-child(3){animation:lds-ellipsis2 .6s infinite;left:26px}.lds-ellipsis div:nth-child(4){animation:lds-ellipsis3 .6s infinite;left:45px}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(19px)}}#simModal .fixed-table-header{background-color:#b3bfb8}td[lkey="Blockly.Msg.POPUP_DOWNLOAD_STEP_A_SENSEBOX"]{padding-bottom:2.5em}#flaskEditor{height:100%}#sourceCodeEditor pre{background-color:transparent;border:0 solid #ccc;border-radius:0;color:#000;font-family:Roboto,sans-serif;line-height:18px;padding:0;position:absolute;top:0}#sourceCodeEditor .codeflask{height:calc(100% - 80px);height:-webkit-calc(100% - 80px);position:relative}#sourceCodeEditor textarea{color:transparent;font-size:13px;top:0;z-index:5}#codeDiv pre,#sourceCodeEditor textarea{line-height:18px;padding:0;position:absolute}#codeDiv pre{background-color:transparent;background-image:linear-gradient(transparent 50%,#f7f7f7 0);background-repeat:repeat;background-size:100% 2.77em;border:0 solid #ccc;border-radius:0;color:#000;font-family:Roboto,sans-serif;margin-top:0;width:100%}#sourceCodeEditor .codeflask__flatten{line-height:18px;padding-top:0!important}#codeDiv textarea{color:hsla(0,0%,100%,0)!important;height:calc(100% - 82px);line-height:18px;margin-top:0;padding:0;position:absolute;z-index:8}#codeDiv .codeflask__flatten{background-color:#fff0;line-height:18px;padding-top:0!important}#codeDiv .codeflask__lines,.codeflask__lines{background-color:#eee;z-index:5!important}.codeflask__lines{padding-top:0!important}.codeflask__lines__line{color:#333;line-height:18px!important}.codeflask--has-line-numbers:before{z-index:4!important}pre code{white-space:inherit}#confirm,#confirmCancel{text-transform:capitalize}.blinking{animation:blinkingBackground 1.2s infinite}.blinking>span{animation:blinkingForeground 1.2s infinite}@keyframes blinkingBackground{0%{background-color:#e2001a;border-bottom:4px solid #e2001a}49%{background-color:#e2001a;border-bottom:4px solid #e2001a}60%{background-color:transparent;border-bottom:4px solid transparent}99%{background-color:transparent;border-bottom:4px solid transparent}to{background-color:#e2001a;border-bottom:4px solid #e2001a}}@keyframes blinkingForeground{0%{color:#fff}49%{color:#fff}60%{color:#333}99%{color:#333}to{color:#fff}}#blocklyDiv.debug path.blocklyPath{fill-opacity:.3}#blocklyDiv.debug path.blocklyPath.selectedBreakpoint{stroke-opacity:1;stroke:purple;stroke-width:2px;transition:none}#blocklyDiv.debug path.blocklyPath.breakpoint{stroke-opacity:1;stroke:red;stroke-width:2px;transition:none}.badge-primary{background-color:#f29400}#releaseInfo{background-color:#fbde00;border:1px solid #d8d8d8;bottom:60px;left:70%;padding:16px;position:fixed;right:8px;z-index:2999}#releaseInfo>span{display:inline-block!important;padding-right:16px;vertical-align:middle}#releaseInfo>.no-button{position:absolute;right:0;top:0}@media (max-width:60em),(max-width:800px){#releaseInfo{left:40%}}.port{cursor:default!important}#valuesContent .panel-heading{background-color:#ddd}#valuesContent .panel-group{margin:20px 0 0}.panel-title>a:before{background-image:url('data:image/svg+xml;charset=utf-8,');position:relative}.panel-title>a.collapsed:before,.panel-title>a:before{background-size:10px;content:"";display:inline-block;height:10px;margin:0 4px;width:10px}.panel-title>a.collapsed:before{background-image:url('data:image/svg+xml;charset=utf-8,')}.panel-title>a{color:inherit;display:inline-block;height:100%;line-height:1.5;text-decoration:none;width:100%}#accordion .panel-body{border:none;max-height:50vh;overflow:auto}input,textarea{border:1px solid #e9ecef;box-sizing:border-box;margin:0;outline:none;padding:10px}input[type=button]{-webkit-appearance:button;cursor:pointer}.btn input[type=radio]{clip:rect(0,0,0,0);pointer-events:none;position:absolute}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}.input-group{clear:both;position:relative}.input-group input[type=button]{background-color:#ddd;transition:all .3s ease}.input-group .button-minus,.input-group .button-plus{font-weight:700;height:32px;padding:0;width:32px}.input-group .quantity-field{display:inline-block;font-size:14px;height:32px;position:relative;resize:vertical;text-align:center;width:32px}input[type=number]{-moz-appearance:textfield}#nn,#nn-learn{height:100%;width:100%}#nn .nn-middle-size{font-size:20px}#nn .nn-bold,#nn-learn .nn-bold{font-weight:700}#nn .nn-large-size{font-size:28px}#nn-epoch-num{width:80px}#nn-top-controls{-webkit-justify-content:space-around}#nn-learn-top-controls,#nn-top-controls{background:#fff;border-bottom:1px solid #ddd;box-shadow:0 1px 4px rgba(0,0,0,.08);display:flex;padding:16px 0;width:100%}#nn-learn-top-controls{justify-content:space-between}#nn-learn-top-controls .nn-control,#nn-top-controls .nn-control{flex-grow:0;margin-left:10px;margin-top:6px}#nn-show-math-all.nn-control{flex:0 0 15%;margin-right:10px}#nn-learn-show-iteration-all.nn-control,#nn-show-iteration-all.nn-control,#nn-show-next-neuron-all.nn-control{align-items:stretch;display:flex;flex-direction:column;justify-content:space-evenly;margin:0 10px}#nn-learn-show-activation{padding:8px;width:100px}#nn-top-controls .nn-control .label{color:#777;display:block;font-size:13px;font-weight:300;margin-bottom:6px}#nn-top-controls .nn-control .value{font-size:24px;font-weight:300;margin:0}#nn-top-controls .nn-control .select,.nn-input-div{position:relative}.nn-input-div{height:36px}#goto-sim,#learn-goto-sim{background-color:#fff;bottom:10px;box-shadow:0 2px 5px rgba(0,0,0,.2);color:#333;font-size:36px;margin:0;max-width:48px;min-height:48px;min-width:48px;padding:2px 0 0;position:absolute;right:10px;z-index:9999}#goto-sim:hover,#learn-goto-sim:hover{background-color:#bacc1e}.nn-selection{background-color:#23b6ac;border:none;color:#fff}#nn-show-math,.nn-selection{border-radius:2px;min-height:36px;padding:6px}#nn-show-math{background-color:#f0f0f0}#nn-learn-show-iteration,#nn-show-iteration,#nn-show-next-neuron{background-color:#fafafa;color:rgba(0,0,0,.6);font-weight:300;text-align:center}#nn-learn-main-part,#nn-main-part{display:flex;justify-content:space-between;margin-bottom:50px;margin-top:30px;padding-top:2px;position:relative}#nn-learn-main-part .output .mdl-checkbox__label.label,#nn-main-part .output .mdl-checkbox__label.label{line-height:1.7em}#nn-features,#nn-learn-features{position:relative;width:10%}#nn-features .nn-plus-minus-neurons{height:44px;line-height:28px;position:absolute;top:-58px;width:120px}.nn-modal-content{background-color:#fff;border:1px solid}.nn-popup-modal{bottom:0;display:none;left:50%;max-width:90%;position:fixed;transform:translate(-50%);z-index:1}.nn-modal-dialog{width:auto}button.nn-btn{background-color:#23b6ac;border:none;border-radius:2px;color:#fff;font-size:20px;height:36px;margin-right:inherit;padding:0;width:36px}.nn-btn.nn-top-control-button{height:27px;width:27px}.nn-btn.nn-cancel{background-color:#cd5c5c}.nn-btn.nn-cancel:hover{background-color:#e8c0c0}#nn-features .nn-plus-minus-neuron-button.active-input{background-color:#bacc1e;box-shadow:inset 0 0 2px 2px #000}#nn-features .nn-plus-minus-neuron-button.active-hidden{background-color:#c7b7b7;box-shadow:inset 0 0 2px 2px #000}#nn-features .nn-plus-minus-neuron-button.active-output{background-color:#f29400;box-shadow:inset 0 0 2px 2px #000}#nn-test-data-upload,#nn-training-data-upload{display:none}.nn-table-input{width:100px}.nn-user-input-table-header{display:inline-block;width:100%}.nn-input-background-color{background:#8fa40266}.nn-output-background-color{background:#f2940066}button.nn-btn:hover{background-color:#ade7e4}.nn-selection option{background-color:#fff;color:#333}#nn-top-controls .nn-num-layers-group{font-weight:700}#nn-features .nn-plus-minus-neurons .nn-plus-minus-neuron-button{margin-right:4px}#nn-features svg .main-label,#nn-learn-features svg .main-label{fill:#333;font-size:13px;font-weight:300}#nn-features .nn-showval,#nn-learn-features .nn-showval{text-anchor:start;cursor:pointer;display:block;font-size:16px;font-weight:700}#nn-features svg #markerArrow,#nn-learn-features svg #markerArrow{fill:#000;stroke:#000;stroke-opacity:.2}#nn-features .node_input rect,#nn-learn-features .node_input rect{fill:#8fa402;cursor:default}#nn-features .node_hidden rect,#nn-learn-features .node_hidden rect{fill:#d3d3d3;cursor:default}#nn-features .node_output rect,#nn-learn-features .node_output rect{fill:#f29400;cursor:default}#nn-features .core .link,#nn-learn-features .core .link{stroke-dasharray:9 1;stroke-dashoffset:1}#nn-features .core .nn-weight-click{stroke-width:14;stroke:#000;fill:none;cursor:pointer;opacity:0}.nn-input{border:2px solid #23b6ac;height:100%;position:relative;top:-4px;width:6em}#nn-learn-features .core .nn-weight-click{stroke-width:14;stroke:#000;fill:none;cursor:pointer;opacity:0}#nn-features .core .nn-weight-show-click,#nn-learn-features .core .nn-weight-show-click{stroke-width:14;stroke:gray;fill:none;cursor:pointer;opacity:.3}.nn-bias-click{cursor:pointer}#nn-features .canvas canvas,#nn-learn-features .canvas canvas{border:2px solid #000;border-radius:3px;box-shadow:0 2px 5px rgba(0,0,0,.2);left:-2px;position:absolute;top:-2px}#nn-network{left:0;position:absolute;top:50px}#nn-editCard{background:#fff;border:1px solid #aaa;border-radius:5px;cursor:default;display:none;left:240px;padding:5px;position:absolute;z-index:10}#nn-learn-training-bias-linechart,#nn-learn-training-weight-linechart{height:65px;width:200px}#nn-learn-training-bias-linechart,#nn-learn-training-weight-linechart,#nn-nameCard{background:#fff;border:1px solid #aaa;cursor:default;display:none;position:absolute;z-index:10}#nn-nameCard{border-radius:5px;left:240px;padding:5px}#nn-name-message{background:#fff;border:12px 4px 4px;color:#333}#nn-table-user-input input{width:100px}.nn-type-button{position:relative;top:5px}.nn-btn.nn-finish-button{left:-4px;position:relative}.nn-metrics{align-content:center;display:flex;flex-basis:25%;flex-wrap:nowrap;font-weight:300;height:60px;justify-content:space-evenly;margin-right:10px;position:relative}#nn-learn-training-loss-linechart{border:1px solid #333;flex:0 0 40%;height:100%;max-width:200px}.nn-output-stats{padding:10px}#nn-random-values-from-to{height:36px;position:relative}#nn-random-values-from-to>input{width:50px}#nn-random-values-from-to>span{position:relative;top:-4px}#nn-random-values-from-to>.nn-random-values-finished-button{padding-left:5px;position:relative;top:0}.nn-output-stats .value{color:rgba(0,0,0,.6);font-weight:300;text-align:center}.nn-type{style:"font-size: 14px";height:40px}canvas{display:block}.link{fill:none;stroke:#aaa;stroke-width:1}g.column rect{stroke:none}#downloadType{padding:8px 20px 20px;text-align:center}.downloadType{border:1px solid #bacc1e;border-radius:2px;cursor:pointer;font-size:18px;margin:12px;padding:12px;text-align:center;text-decoration:none;width:100%}#progressBar{height:10px;width:0}#progressBar,.downloadType:hover{background-color:#bacc1e}/*# sourceMappingURL=roberta.css.map */ diff --git a/OpenRobertaServer/staticResources/css/roberta.css.map b/OpenRobertaServer/staticResources/css/roberta.css.map index 57d27b14aa..9befac6ac2 100644 --- a/OpenRobertaServer/staticResources/css/roberta.css.map +++ b/OpenRobertaServer/staticResources/css/roberta.css.map @@ -1 +1 @@ -{"version":3,"sources":["roberta.css"],"names":[],"mappings":"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","file":"roberta.css","sourcesContent":["@charset \"UTF-8\";\n*:hover,\n*:active,\n*:visited,\n*:focus,\na:focus {\n outline: 0;\n outline: none;\n}\n\nul,\nol {\n margin: 0;\n}\n\ndl.grid {\n display: grid;\n grid-template-columns: 1fr 100%;\n}\n\ndd {\n margin: 0;\n padding-left: 1em;\n}\n\ndl.grid dd {\n margin-bottom: 1em;\n}\n\ndl.grid dt {\n min-width: 140px;\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-Regular.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-Italic.ttf') format('truetype');\n font-style: italic;\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-Bold.ttf') format('truetype');\n font-weight: bold;\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-BoldItalic.ttf') format('truetype');\n font-weight: bold;\n font-style: italic;\n}\n\nhtml,\nbody {\n display: flex;\n margin: 0;\n padding: 0;\n height: 100%;\n width: 100%;\n font-family: 'Roboto', sans-serif;\n font-size: 1em;\n}\n\n.pace {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n z-index: 3000;\n position: fixed;\n height: 12rem;\n width: 12rem;\n margin: auto;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n line-height: 12rem;\n font-size: 2rem;\n color: transparent;\n font-weight: 100;\n text-align: center;\n -webkit-animation: pace-theme-center-circle-spin linear infinite 2s;\n -moz-animation: pace-theme-center-circle-spin linear infinite 2s;\n -o-animation: pace-theme-center-circle-spin linear infinite 2s;\n animation: pace-theme-center-circle-spin linear infinite 2s;\n background-image: url(../css/img/Nepo_N.png);\n background-color: transparent !important;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n@-ms-keyframes pace-theme-center-circle-spin {\n 0% {\n -ms-transform: perspective(12rem) rotateY(0deg);\n }\n 100% {\n -ms-transform: perspective(12rem) rotateY(360deg);\n }\n}\n\n@keyframes pace-theme-center-circle-spin {\n 0% {\n transform: perspective(12rem) rotateY(0deg);\n }\n 100% {\n transform: perspective(12rem) rotateY(360deg);\n }\n}\n\nbody.blocklyMinimalBody * {\n opacity: 1 !important;\n overflow: hidden;\n transform: none;\n}\n\n/*#head-navigation, #tutorial-navigation {\n box-shadow: 0 3px 5px #aeaeaf;\n -webkit-box-shadow: 0 3px 5px #aeaeaf;\n border: 0;\n margin: 0;\n}*/\n#header {\n background-color: #ffffff;\n border: 0;\n margin: 0;\n}\n\n#header > .navbar {\n padding-bottom: 0;\n}\n\n.navbar-toggler {\n padding: 12px;\n border: none;\n}\n\n.navbar-toggler:focus {\n box-shadow: none;\n}\n\n.nav-item:hover, button#navbarButtonsHead:hover {\n background-color: #BACC1E;\n border-radius: 2px;\n border: 0;\n}\n\n#head-navigation-tabs > li > a.active {\n border-bottom: 4px solid #BACC1E;\n}\n\n/* TODO remove this when hardcoded in blockly is removed */\n.blocklyToolboxDiv {\n top: 0 !important;\n}\n\n#iconDisplayLogin,\n#iconDisplayRobotState {\n float: left;\n font-size: 24px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n margin: 0 6px;\n}\n\n.robertaLogo {\n background: url(../css/svg/logo-word.svg) no-repeat;\n}\n\n.fraunhoferLogo {\n background: url(../css/img/iais_logo.gif) no-repeat;\n}\n\n.googleLogo {\n background: url(../css/svg/Google_logo.svg) no-repeat;\n background-size: contain;\n}\n\n.NRWMinLogo {\n background: url(../css/img/AK_Schule.png) no-repeat;\n background-size: contain;\n}\n\n.imgFloatLeft {\n float: left;\n width: 210px;\n height: 65px;\n padding: 0;\n margin: 4px 16px 0 0;\n}\n\n#language.nav > li > a {\n color: #333333;\n padding: 0;\n margin: 6px;\n}\n\n#language.nav > li > a:hover,\n#language.nav > li > a:focus {\n background-color: #fff;\n}\n\n#logoShowStart img {\n display: block;\n height: 60px;\n width: 146px;\n margin: 18px;\n}\n\n.invisible {\n visibility: hidden;\n}\n\n.hidden {\n display: none;\n}\n\n\n.img-beta, .img-deprecated {\n position: absolute;\n width: auto;\n left: 10px;\n top: -5px;\n -ms-transform: rotate(-10deg);\n transform: rotate(-10deg);\n z-index: 5;\n}\n\n.new {\n background-color: #fdc300;\n max-width: fit-content;\n position: absolute;\n z-index: 99;\n top: 0;\n left: 0;\n padding: 5px 10px;\n font-size: 14px;\n border-radius: 5px 0;\n}\n\n.menuTab {\n text-transform: uppercase;\n font-weight: bold;\n}\n\n.navigation-row {\n width: 100%;\n margin: 0;\n}\n\n.scroller {\n margin: 0;\n font-size: 24px;\n cursor: pointer;\n background-color: #fff;\n padding: 8px 2px 0 28px;\n float: left;\n}\n\n#main-section {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0;\n background: #E9ECEF;\n overflow: hidden;\n top: 96px;\n padding: 0;\n}\n\n#headNavigation.show {\n max-height: 335px;\n overflow-y: auto;\n}\n\n.navbar-nav ul {\n overflow: hidden;\n overflow-y: auto;\n max-height: calc(100vh - 100px);\n}\n\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n margin-right: 2px;\n}\n\n.btn-default:hover {\n background-color: #ddd;\n border-color: #ccc;\n}\n\n#blocklyDiv, #bricklyDiv {\n /*float: left;*/\n /*width: 100%;*/\n height: 100%;\n overflow: hidden;\n background-size: 100%;\n touch-action: none;\n}\n\n.log {\n overflow: auto;\n position: fixed;\n top: 152px;\n bottom: 50px;\n margin: 16px 68px 32px 68px;\n}\n\n.canvasSim {\n position: absolute;\n left: 0;\n top: 0;\n}\n\ncanvas.border {\n border: 2px solid grey;\n}\n\n#webotsDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n}\n\n#canvasDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1;\n width: 100%\n}\n\n#sliderDiv {\n width: 20px;\n cursor: col-resize;\n z-index: 11;\n}\n\n#sliderBorder {\n width: 6px;\n z-index: 8;\n background-color: #C0C0C0;\n}\n\n.codeActive > pre {\n width: 100%;\n height: 100%;\n word-wrap: inherit;\n}\n\n.fromRight {\n float: right;\n height: 100%;\n width: 0;\n background-color: #d8d8d8;\n display: none;\n position: relative;\n z-index: 10;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n}\n\n#infoDiv.fromRight {\n background-color: #eee;\n}\n\n.fromRight.rightActive {\n height: 100%;\n overflow: hidden;\n display: block;\n}\n\n#codeContainer {\n overflow-y: auto;\n height: 100%;\n}\n\n#codeContent {\n overflow-y: auto;\n padding-bottom: 60px;\n padding-top: 12px;\n background-color: #eee;\n}\n\n#infoContent {\n border: solid 10px #eee;\n border-top: none;\n background-color: #fff;\n overflow: auto;\n height: inherit;\n width: inherit;\n -webkit-user-select: text;\n user-select: text;\n}\n\n#infoContent[data-placeholder]:before {\n color: #555;\n padding: 0 12px;\n}\n\n#infoToolbar {\n border: solid 10px #eee;\n}\n\n#legalDiv {\n overflow-y: scroll;\n background-color: #fff;\n padding-top: 1.5rem;\n}\n\n#legalDiv > *:not(#legalDivHeader) {\n padding: 1rem;\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n#legalDiv > #legalDivHeader {\n text-align: center;\n font-size: 1.25em;\n}\n\n#legalDiv > #legalDivHeader > a {\n padding: 0 1rem;\n}\n\n#helpDiv ul {\n list-style-type: none;\n display: table;\n}\n\n#helpDiv li {\n display: table-row;\n}\n\n#helpDiv li:before {\n display: table-cell;\n padding-right: 6px;\n}\n\n#helpContent {\n padding: 10px 0;\n overflow-y: auto;\n height: 100%;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #fff;\n}\n\n#helpContent h3,\n#helpContent h2 {\n padding-left: 10px;\n padding-top: 25px;\n border-top: 1px solid #F29400;\n}\n\n#helpContent p,\n#helpContent h4 {\n margin-left: 8px;\n margin-right: 12px;\n}\n\n#helpContent h4 {\n margin-top: 18px;\n}\n\n.selectedHelp {\n background-color: #f0f0f0;\n}\n\n#rightMenuDiv {\n position: absolute;\n top: 32px;\n right: 0;\n z-index: 9;\n}\n\n#mbedContent,\n#valuesContent {\n background-color: #fff;\n border: 2px solid #33b8ca;\n padding: 12px 14px 12px 12px;\n border-radius: 2px;\n display: inline-block;\n}\n\n#valuesContent {\n min-width: 330px;\n overflow-y: auto;\n}\n\n.customDropdown {\n border: 1px solid #333;\n border-radius: 2px;\n background-color: #fff;\n}\n\n.rightMenuButton {\n width: 40px;\n height: 40px;\n background: #C0C0C0;\n position: relative;\n margin-bottom: 6px;\n -moz-border-radius: 2px;\n -webkit-border-radius: 2px;\n border-radius: 2px;\n z-index: 12;\n}\n\n.rightMenuButton:before {\n content: \"\";\n position: absolute;\n right: 100%;\n top: 14px;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-right: 6px solid #333;\n border-bottom: 5px solid transparent;\n}\n\n.rightMenuButton.rightActive {\n color: #E2001A;\n}\n\n.rightMenuButton.rightActive:before {\n border-top: 5px solid transparent;\n border-left: 6px solid #333;\n border-bottom: 5px solid transparent;\n right: -6px;\n}\n\ndiv.rightMenuButton:hover,\n.rightMenuButton:active {\n cursor: pointer;\n}\n\n.rightMenuButton > .typcn {\n position: relative;\n top: 8px;\n font-size: 24px;\n left: 7px;\n}\n\n#tutorialButton.rightMenuButton, #infoButton.notEmpty {\n background-color: #BACC1E;\n}\n\n#tutorialButton.rightMenuButton:before, #infoButton.notEmpty:before {\n border-right: 6px solid #BACC1E;\n}\n\n.menu-icons {\n font-size: 24px;\n line-height: 24px;\n color: #fff;\n border: 0;\n margin: 0;\n}\n\n#toastContainer {\n position: absolute;\n top: 0;\n left: 50%;\n}\n\n#toastLeftContainer {\n position: relative;\n top: 0;\n left: -50%;\n padding: 0;\n margin: 0;\n}\n\n#toastLeftContainer span {\n font-size: 16px;\n z-index: 9999;\n color: #333333;\n white-space: nowrap;\n background-color: #fff;\n padding: 8px;\n}\n\n#show-startup-message {\n z-index: 1039;\n}\n\n#show-startup-message #popup-robot-container {\n margin-left: 100px;\n margin-right: 100px;\n}\n\n#show-startup-message .popup-robot {\n background-color: #fff;\n color: #333;\n}\n\n#show-startup-message .popup-robot.robotSpecial {\n background-color: transparent;\n color: #000;\n}\n\n#slick-container {\n background: #33B8CA;\n}\n\n.slick-list {\n padding-top: 12px !important;\n padding-bottom: 12px !important;\n}\n\n.slick-dots {\n bottom: inherit;\n top: 160px;\n}\n\n#show-startup-message .slick-slide {\n transform: scale(1);\n transition: .3s ease-in-out all;\n opacity: 1;\n}\n\n#show-startup-message .slick-slide.slick-center {\n transform: scale(1.2);\n}\n\n#show-startup-message .slick-prev {\n left: -100px;\n top: 45%;\n}\n\n#show-startup-message .slick-next {\n right: -100px;\n top: 45%;\n}\n\n#show-startup-message .slick-next:before,\n#show-startup-message .slick-prev:before {\n color: #000;\n font-size: 25px;\n}\n\n#show-startup-message .popup-robot a {\n position: relative;\n bottom: 20px;\n right: 75px;\n color: #000;\n font-size: 25px;\n}\n\n#show-startup-message .popup-robot.robotSpecial a {\n left: 86px;\n top: 20px;\n}\n\n#show-startup-message .robot-info {\n font-size: 24px;\n position: relative;\n}\n\n#startPopupBack {\n font-size: 36px;\n position: relative;\n bottom: 50px;\n text-decoration: none;\n color: #333;\n}\n\n#show-startup-message .modal-dialog {\n border: 2px solid #33B8CA;\n}\n\n.wait,\n.ok {\n color: #33B8CA;\n}\n\n.error {\n color: #333;\n}\n\n@-webkit-keyframes blinker {\n from {\n color: #afca04;\n }\n to {\n color: #e2001a;\n }\n}\n\n@keyframes blinker {\n from {\n color: #F29400;\n }\n to {\n color: #e2001a;\n }\n}\n\n.busy {\n -webkit-animation-name: blinker;\n -webkit-animation-iteration-count: infinite;\n -webkit-animation-timing-function: cubic-bezier(1.0, 0, 0, 1.0);\n -webkit-animation-duration: 1s;\n animation-name: blinker;\n animation-duration: 1s;\n animation-timing-function: cubic-bezier(1.0, 0, 0, 1.0);\n animation-iteration-count: infinite;\n}\n\n.menuDisabled {\n background-color: #fff;\n}\n\n.dropdown-toggle.disabled:hover,\n.dropdown-toggle.disabled:focus {\n text-decoration: none;\n cursor: default;\n background-color: white !important;\n background-image: none;\n}\n\n.bottomLeftButtons {\n left: 12px;\n position: absolute;\n bottom: 6px;\n z-index: 99;\n display: flex;\n}\n\n#simEditButtons {\n left: 12px;\n top: 10px;\n position: absolute;\n z-index: 99;\n}\n\n#simEditButtons button span:before {\n font-size: 36px;\n}\n\n.simAddMarker span {\n font-size: 12px;\n display: inline-block;\n min-width: 16px;\n}\n\nbutton#simCustomColorObject span.typcn:before {\n color: #FBED00;\n}\n\nbutton#simCustomObstacle.typcn:before {\n color: #009EE3;\n}\n\n.huebee__container {\n position: absolute;\n left: 0;\n top: 6px;\n padding: 24px 10px 10px;\n background: #e7e7e7;\n border-radius: 2px;\n box-shadow: none;\n}\n\n.huebee__cursor {\n border: 5px solid #fff;\n border-radius: 2px;\n width: 30px;\n height: 30px;\n}\n\n.huebee {\n /* disable reveal/hide transition */\n transition: none;\n}\n\n.huebee__close-button {\n display: block;\n position: absolute;\n width: 24px;\n height: 24px;\n top: 0;\n right: 0;\n border-radius: 0;\n background: none;\n}\n\n.huebee__close-button__x {\n stroke-width: 2;\n stroke: #bbb;\n}\n\n.huebee__close-button__x:hover, .huebee__close-button__x:focus {\n stroke: #333;\n}\n\n.huebee__close-button:hover, .huebee__close-button:focus {\n background: #e7e7e7;\n}\n\n#codeButtons {\n left: 12px;\n bottom: 0;\n position: absolute;\n z-index: 99;\n width: 100%;\n background-color: #EEE;\n height: 70px;\n padding-top: 10px;\n}\n\n.btn-group-vertical > .btn.simbtn {\n margin: 8px 0;\n}\n\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-bottom: 5px;\n}\n\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n\n/***** BEGIN Overwrite Bootstrap-CSS *****/\n\n/* .tab-content > .tab-pane:not(.active),\n.pill-content > .pill-pane:not(.active) {\n display: block;\n height: 0;\n overflow-y: hidden;\n} */\n.tooltip > .tooltip-inner {\n background-color: #333;\n}\n\n.tooltip > .tooltip-arrow {\n border-right-color: #333;\n}\n\n/*.container-fluid {\n padding-right: 16px;\n padding-left: 16px;\n}*/\n\n.nav-tabs > li + li {\n margin: 0;\n}\n\n#toolboxDiv {\n -webkit-overflow-scrolling: touch;\n}\n\n#toolboxDiv > .nav-tabs {\n border: 0;\n}\n\n#toolboxDiv > .nav-tabs li {\n width: 50%;\n text-align: center;\n border: none;\n}\n\n#toolboxDiv > .blocklyToolboxDiv {\n position: relative !important;\n}\n\n#toolboxDiv > .nav-tabs li > a.active {\n background-color: #E9ECEF;\n color: #333333;\n}\n\n#toolboxDiv > .nav-tabs li > a {\n background-color: #C0C0C0;\n color: #fff;\n margin: 0;\n padding: 6px 0;\n border: none;\n border-radius: 0;\n}\n\n/*#blocklyDiv .blocklyTreeRoot {\n padding: 6px 0;\n}*/\n\n.blocklyFlyoutBackground {\n fill-opacity: 0.925 !important;\n}\n\n.head-navi-icons:before {\n margin-right: 2px;\n}\n\n\n/*.nav#head-navigation-tabs {\n position: relative;\n width: auto;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n.nav#head-navigation-tabs > li > a {\n margin: 0;\n border: 0;\n padding: 8px 16px 4px 16px;\n border-radius: 2px 2px 0 0;\n border-bottom: 4px solid #fff;\n background-color: #fff;\n}\n\n.nav#head-navigation-tabs > li > a:hover,\n.nav#head-navigation-tabs > li > a:active,\n.nav#head-navigation-tabs > li > a:focus {\n border-bottom: 4px solid #eee;\n background-color: #eee;\n}\n\n\n.nav#head-navigation-tabs > li.active > a:hover,\n.nav#head-navigation-tabs > li.active > a:active,\n.nav#head-navigation-tabs > li.active > a.focus {\n background-color: #BACC1E;\n border-bottom: 4px solid #BACC1E;\n}\n\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n padding: 12px;\n margin: 4px 4px 4px 16px;\n}\n\n.navbar-toggle ~ .navbar-toggle {\n margin: 4px 4px 4px 0;\n}\n\n.navbar-default .navbar-toggle:not(:first-child) {\n margin: 4px 4px 4px 4px;\n}\n\n.navbar-default {\n background-color: #fff;\n}\n\n.navbar-default .navbar-nav > li > a:hover {\n background-color: #BACC1E;\n}\n\n.navbar-default .navbar-toggle:hover {\n background-color: #BACC1E;\n}\n\n.navbar-fixed-bottom {\n border: 0;\n padding: 16px 68px;\n margin-bottom: 20;\n}\n\n.head-navi-title {\n margin-left: 6px;\n}\n\n.collapse.in > .nav li a {\n color: #333;\n}\n\n.collapse.in > .nav li.disabled a {\n color: #bbb;\n}*/\n\n.dropdown-menu:not(.editor) {\n border-radius: 2px;\n}\n\n.dropdown-menu > li > a > span.kbd {\n position: absolute;\n right: 20px;\n bottom: 0.4em;\n font-size: 0.8em;\n float: right;\n}\n\n#head-navigation-program-edit .dropdown-menu > li > a, #head-navigation-configuration-edit .dropdown-menu > li > a {\n position: relative;\n padding-right: 70px;\n}\n\n.dropdown-menu > li:not(.disabled) > a:hover,\n.dropdown-menu > li:not(.disabled) > a:focus {\n background-color: #BACC1E !important;\n}\n\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #bbb;\n}\n\n#tokenValue {\n text-transform: uppercase\n}\n\n#roberta {\n background-image: url(/css/img/Roberta_ears_up.png);\n width: 160px;\n height: 180px;\n background-repeat: no-repeat;\n position: absolute;\n bottom: -12px;\n right: -20px;\n background-size: contain;\n}\n\n#version-info {\n position: absolute;\n top: 16px;\n right: 60px;\n font-size: 24px;\n font-weight: 500;\n}\n\n.cover {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 2000;\n background-color: #ddd;\n}\n\n.connector {\n margin-top: 19px;\n position: absolute;\n right: 5%;\n z-index: 900;\n fill: #BACC1E;\n}\n\n.border-dotted {\n border-right: 1px dashed #afca04;\n}\n\n.popupTitel {\n margin-top: 20px;\n margin-bottom: 10px;\n text-align: center;\n}\n\n.popup-checkbox {\n color: #bbb;\n font-size: 14px;\n padding: 0 !important;\n padding-bottom: 16px !important;\n}\n\n.download-checkbox {\n color: #bbb;\n font-size: 14px;\n padding-bottom: 16px !important;\n padding-left: 16px !important;\n width: 100%;\n}\n\n.popup-checkbox input,\n.download-checkbox input {\n position: relative;\n top: 2px;\n margin-right: 6px;\n margin-bottom: 6px;\n}\n\n.popup-checkbox label,\n.download-checkbox label {\n font-weight: normal;\n display: initial;\n}\n\n.download-checkbox ul {\n list-style: none;\n}\n\n#download-instructions {\n list-style-type: none;\n padding: 0;\n margin: 32px 16px 0 16px;\n}\n\n#download-instructions li {\n font-size: 20px;\n margin-bottom: 48px;\n padding-left: 2em;\n position: relative;\n}\n\n#download-instructions .typcn-Roberta::before {\n position: absolute;\n left: 0;\n padding-top: 4px;\n}\n\n#programLink a {\n text-decoration: underline;\n color: #337ab7;\n}\n\n.clearer {\n clear: both;\n}\n\n.simWindow {\n position: absolute;\n left: 50px;\n top: 200px;\n z-index: 99;\n display: none;\n}\n\n.simWindow#simValuesWindow button.close {\n top: 4px;\n right: 14px;\n position: absolute;\n}\n\n.simWindow#simRobotWindow button.close {\n top: 4px;\n right: 16px;\n position: absolute;\n z-index: 99999;\n}\n\n#VariablesContent {\n height: 300px;\n overflow: auto;\n width: auto;\n}\n\n#simValuesContent label {\n display: inline-block;\n width: 150px;\n margin-right: 6px;\n margin-left: 10px;\n}\n\n#simValuesContent div > div {\n white-space: nowrap;\n max-height: 70vh;\n}\n\n#simValuesContent span {\n display: inline-block;\n padding: 0 6px;\n width: 60px;\n}\n\n.bigNumber {\n color: #8fa402;\n font-size: large;\n font-weight: bold;\n}\n\n.simWindow .modal-dialog {\n width: max-content;\n min-width: max-content;\n margin: 0;\n pointer-events: all;\n}\n\n.simWindow text {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.simWindow div {\n width: 100%;\n}\n\n.modal-backdrop.in {\n opacity: .3;\n}\n\n.modal-content {\n border: 0;\n border-radius: 2px;\n}\n\n.modal-body {\n padding: 0 16px;\n}\n\n.modal-body.left-inner-addon {\n word-break: break-word;\n}\n\n#startup-message-statustext h4 {\n font-weight: 500;\n}\n\n.modal-header,\n.modal-footer {\n border: 0;\n padding: 16px 16px 20px;\n text-align: left;\n}\n\n.form-control:focus, .form-select:focus {\n box-shadow: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n -moz-transition: none;\n -webkit-transition: none;\n border: 1px solid #afca04;\n}\n\n.modal-footer {\n justify-content: space-between;\n}\n\n.with-devider {\n margin-top: 10px;\n}\n\n.btn-toolbar.editor {\n padding: 10px 0 0 0;\n background-color: #eee;\n}\n\n.btn-info, .btn-default.show {\n background-color: #afca04;\n border-color: #afca04;\n}\n\n.btn.btn-link.btn-user {\n background-color: transparent;\n color: var(--bs-btn-color);\n text-decoration: none;\n padding: 0\n}\n\n.btn.btn-link.btn-user:hover, .btn.btn-link.btn-user:focus, .btn.btn-link.btn-user:hover:focus {\n text-decoration: underline;\n background-color: transparent;\n color: var(--bs-btn-hover-color);;\n}\n\n.btn {\n border-radius: 2px;\n}\n\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-color: #afca04;\n border-color: #afca04;\n}\n\na.btn.editor {\n display: flex;\n align-items: center;\n}\n\n.btn:hover:not(.editor, .start),\n.btn:active:focus:not(.editor, .start),\n.btn:focus:not(.editor, .start),\n.btn .focus:not(.editor, .start),\n.btn:active:not(.editor, .start),\n.btn .active:not(.editor, .start),\n.open > .dropdown-toggle .btn:not(.editor, .start) {\n background-color: #C7D92B;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n outline: none;\n}\n\n.btn:not(.editor, .galleryLike, .start) {\n margin-right: 16px;\n margin-left: 0;\n background-color: #BACC1E;\n color: #fff;\n font-size: 16px;\n border: none;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n cursor: pointer;\n}\n\nbutton.editor {\n background-color: #dedede;\n border-radius: 2px;\n}\n\nbutton.editor:hover {\n background-color: #eee;\n}\n\n.simbtn.btn:hover,\n.simbtn.btn:active:focus,\n.simbtn.btn:focus,\n.simbtn.btn.focus,\n.simbtn.btn:active,\n.simbtn.btn.active,\n.open > .dropdown-toggle.simbtn.btn {\n background-color: #f29400;\n}\n\n#simEditButtons > .typcn-chart-line-outline {\n fill: #BACC1E;\n}\n\n.simKey:hover {\n cursor: pointer;\n}\n\n.fixed-table-toolbar .btn:not(.start) {\n width: 48px;\n height: 48px;\n margin-right: 4px;\n margin-left: 0;\n background-color: #BACC1E;\n color: #fff;\n font-size: 24px;\n border: none;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n cursor: pointer;\n}\n\n.fixed-table-toolbar button.btn:last-child {\n margin-right: 0;\n}\n\n.fixed-table-toolbar .btn:hover:not(.start) {\n background-color: #C7D92B;\n}\n\n.btn-group.pull-right > .btn:last-child {\n margin-right: 0;\n}\n\ntable .typcn-flow-merge:before,\ntable .typcn-chevron-left:before,\ntable .typcn-chevron-right:before {\n display: inline-block;\n transform: rotate(-90deg);\n}\n\ntable:not(#robotTable) [data-bs-toggle=\"collapse\"]:after {\n content: url(\"data:image/svg+xml;utf8,\");\n float: right;\n}\n\n.fixed-table-container thead th .both {\n background-image: url(\"../css/svg/arrow-unsorted.svg\");\n}\n\n.fixed-table-container thead th .asc {\n background-image: url(\"../css/svg/arrow-sorted-up.svg\");\n}\n\n.fixed-table-container thead th .desc {\n background-image: url(\"../css/svg/arrow-sorted-down.svg\");\n}\n\ntable:not(#robotTable) [data-bs-toggle=\"collapse\"].collapsed:after {\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.modal-body > .bootstrap-table {\n margin: 0;\n}\n\n.blbtn {\n width: 48px;\n height: 48px;\n margin-right: 2px;\n margin-left: 0;\n margin-bottom: 6px;\n background-color: #fff;\n color: #333;\n font-size: 0;\n border: 1px solid #D8D8D8;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n cursor: pointer;\n}\n\n.blbtn:hover {\n background-color: #BACC1E;\n}\n\n.modal-footer .btn + .btn {\n margin-left: 0;\n margin-right: 0;\n}\n\n.btn-close {\n --bs-btn-close-focus-shadow: 0;\n}\n\n.close:hover,\n.close:focus {\n color: #333;\n opacity: 1;\n}\n\n#popup-robot-main {\n visibility: hidden;\n}\n\n#popup-robot-main.slick-initialized {\n visibility: visible;\n}\n\n.robot-container {\n border-radius: 4px;\n border: 1px solid #ddd;\n width: 140px;\n height: 88px;\n display: inline-grid;\n margin: 20px;\n padding: 13px 0;\n text-align: center;\n cursor: pointer;\n}\n\n.startupImages {\n top: 50%;\n position: relative;\n margin-top: 0;\n}\n\n.robot-label {\n display: block;\n line-height: 14px;\n}\n\n.robot-icon {\n position: relative;\n font-size: 40px;\n right: -16px;\n}\n\n.typcn.robot-icon:before {\n margin: 0;\n}\n\n.bootstrap-tagsinput {\n border: 10px solid #eee;\n padding: 4px 6px;\n color: #555;\n white-space: nowrap;\n overflow-x: auto;\n width: 100%;\n word-break: break-word;\n -webkit-hyphens: auto;\n -moz-hyphens: auto;\n hyphens: auto;\n}\n\n.bootstrap-tagsinput .tag {\n background-color: #bbb;\n margin-right: 2px;\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n\n}\n\n/***** END Overwrite Bootstrap-CSS *****/\n\n/***** BEGIN typicons *****/\n\n.dropdown-menu .typcn:before {\n margin-right: 6px;\n}\n\n#toolboxDiv > .nav-tabs .typcn:before {\n position: relative;\n top: 1px;\n}\n\n.blbtn.typcn:before {\n margin-right: 0;\n font-size: 36px;\n}\n\n.bootstrap-table .typcn:before {\n margin-right: 0;\n}\n\n.bootstrap-table .no-records-found td {\n color: #333333;\n}\n\n.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {\n background-color: #E9ECEF;\n}\n\n.input-typcn:before {\n font-size: 22px;\n position: relative;\n top: 4px;\n left: -1px;\n}\n\n/***** END typicons *****/\n\nlabel.form-invalid {\n position: relative;\n width: 100%;\n padding: 6px 6px;\n background: rgb(221, 221, 221);\n background: rgba(221, 221, 221, 0.9);\n color: #E2001A;\n border-radius: 2px;\n font-size: 16px;\n font-weight: normal;\n z-index: 10;\n}\n\nlabel.form-invalid:after {\n right: 10%;\n content: \" \";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none;\n border: 6px solid transparent;\n border-top-color: #E2001A;\n margin-top: 28px;\n z-index: 20;\n}\n\n#div-login-forms .form-group {\n position: relative;\n}\n\n.form-group {\n width: 100%;\n}\n\n.form-group .hint {\n position: relative;\n border-radius: 2px;\n margin-top: 12px;\n color: #333;\n background: rgb(221, 221, 221);\n background: rgba(221, 221, 221, 0.9);\n font-size: 16px;\n padding: 6px;\n z-index: 11;\n width: 100%;\n}\n\n.hint:before {\n position: absolute;\n content: '';\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 6px 6px 6px;\n border-color: transparent transparent #8FA402 transparent;\n right: 75%;\n top: -6px;\n}\n\n/***** BEGIN Input-Fields *****/\n\n.capitalLetters {\n text-transform: uppercase;\n}\n\n.input-group-addon {\n border: 1px solid #afca04;\n background: #fff;\n padding: 6px 6px 0 10px;\n border-radius: 2px;\n}\n\n/* enable absolute positioning */\n\n.inner-addon {\n position: relative;\n}\n\n/* style icon */\n\n.inner-addon .typcn {\n position: absolute;\n padding: 0 6px;\n left: 0;\n color: #c7c7c7;\n font-size: 20px;\n}\n\n#programShareWith {\n margin-right: 15px;\n}\n\ninput.shareLabelInput.form-control, select.shareLabelInput.form-control {\n margin: 0;\n}\n\nlegend {\n margin-bottom: 0;\n}\n\n.progName:before {\n margin-right: 0;\n}\n\n/***** END JQuery-Popup-Input-Fields *****/\n\n.bootstrap-table, .table {\n --bs-table-color: #333333;\n}\n\n.bootstrap-table:not(#start .bootstrap-table), .table:not(#robotTable) {\n cursor: pointer;\n}\n\n.bootstrap-table a {\n color: #333;\n margin-right: 4px;\n margin-left: 4px;\n text-decoration: none;\n}\n\n/*.bootstrap-table .extend:a {\n margin-right: 0;\n margin-left: 0;\n}*/\n\n.bootstrap-table a.disabled {\n color: #bbb;\n pointer-events: none;\n}\n\n/*.filters select {\n appearance: auto;\n}*/\n\n.bootstrap-table .fixed-table-toolbar .float-left, .bootstrap-table .fixed-table-toolbar .float-right {\n margin-top: 0;\n}\n\n.bs-bars.float-left {\n width: 100%;\n}\n\ntd.bs-checkbox {\n padding: 14px 8px 0 8px !important;\n}\n\n.bootstrap-table a:hover,\n.bootstrap-table a:focus {\n color: #000;\n text-decoration: none;\n}\n\n.bootstrap-table a > span {\n padding: 0;\n}\n\n.galleryTable {\n position: absolute;\n}\n\n.galleryTable tbody {\n display: flex;\n flex-wrap: wrap;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.galleryTable tr > td {\n background-color: transparent;\n}\n\n.galleryTable .typcn:before {\n position: absolute;\n left: 50%;\n margin-left: -40px;\n color: #eee;\n font-size: 80px;\n top: 10px;\n}\n\na.bookmark.typcn:before {\n color: #39378b;\n font-size: 34px;\n opacity: .8;\n padding: 16px;\n position: relative;\n left: 40px;\n top: 16px;\n z-index: 30;\n}\n\na.bookmark {\n width: 66px;\n height: 66px;\n display: block;\n right: 0;\n top: 0;\n margin: 0;\n position: absolute;\n border-radius: 50%;\n}\n\na.bookmark.typcn:hover:before {\n font-size: 30px;\n padding: 18px;\n opacity: 1;\n top: 18px;\n}\n\n#start .nav-link {\n background: none;\n border-bottom: 0.1875rem solid rgba(57, 55, 139, 0);\n color: rgba(0, 0, 0, .5);\n margin-right: 1.25rem;\n padding: 0 0 0.625rem;\n}\n\n#start .nav-link.active {\n border-bottom: 0.1875rem solid rgba(57, 55, 139, 1);\n color: #39378b;\n font-weight: 700;\n}\n\n#start .nav-link:hover {\n color: #39378b;\n}\n\n#start .dropdown-menu {\n border-radius: 5px;\n}\n\n#start .dropdown-toggle.show::after {\n transform: rotate(180deg);\n}\n\nbutton.btnFilter.start {\n display: inline-block;\n font-weight: 700;\n padding: 0.9375rem;\n text-decoration: none;\n color: #39378b;\n background-color: #ffffff;\n margin-left: 6px !important;\n border: none;\n border-radius: 5px !important;\n}\n\nbutton.btnFilter.start:hover, button.filter.start.show {\n background: #39378b;\n color: #fff;\n}\n\n#start .fixed-table-toolbar {\n min-height: 74px;\n}\n\n#start .galleryTable button.pick.start {\n display: inline-block;\n padding: 10px 50px 10px 15px;\n text-decoration: none;\n background-color: #39378b;\n color: #ffffff;\n float: right;\n margin: 12px -9px -9px 0;\n position: relative;\n border-radius: 5px 0;\n}\n\nbutton#more.start {\n display: inline-block;\n padding: 10px 50px 10px 15px;\n text-decoration: none;\n background-color: #39378b;\n color: #ffffff;\n margin: 0 0 20px;\n position: relative;\n border-radius: 5px;\n width: auto;\n padding: 10px;\n}\n\n\n#start div.start.typcn {\n position: relative;\n}\n\n#start .galleryTable button.pick.start:before {\n position: absolute;\n font-size: 24px;\n transform: translate(0px, 0px);\n transition-duration: 0.3s;\n margin: 0;\n right: 0;\n}\n\n#start .galleryTable button.pick.start:hover:before {\n transform: translate(5px, 0);\n transition-duration: 0.3s;\n}\n\n#start .galleryTable div.start.typcn:hover {\n background-color: red;\n}\n\n#start .fixed-table-container.fixed-height, #start .fixed-table-body {\n border: none;\n height: auto !important;\n margin: 0 -1.5em;\n}\n\n#start .galleryTable.table {\n position: relative;\n}\n\n#start .galleryTable td {\n color: #333;\n background-color: #ffffff;\n border-radius: 5px;\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: 0;\n --bs-table-bg-state: 0;\n}\n\na.page-link {\n --bs-pagination-active-bg: #BACC1E;\n --bs-pagination-active-border-color: #BACC1E;\n}\n\na.page-link:focus, a.page-link:hover {\n box-shadow: none;\n}\n\n.galleryIcon.typcn:before {\n position: relative;\n color: #fff;\n font-size: 24px;\n font-weight: 700;\n top: 4px;\n left: 40px;\n}\n\n.fixed-table-container.fixed-height.has-card-view {\n overflow: auto;\n}\n\nspan.card-view-title {\n min-width: auto !important;\n}\n\n.tutorialIcon.typcn:before {\n position: relative;\n color: #fff;\n font-size: 24px;\n top: 0;\n left: 0;\n margin-left: 0;\n margin-right: 12px;\n width: 1.5em;\n display: inline-block;\n}\n\ndiv.imgSol img, div.imgSol svg {\n max-width: 100%;\n overflow: hidden;\n}\n\n/*#galleryList .fixed-table-toolbar {\n display: flex;\n align-items: center;\n}*/\n\n#galleryList .fixed-table-toolbar .pull-left {\n flex: 1;\n}\n\n#galleryList .pull-right.search {\n display: none;\n}\n\n.listToolbar {\n display: flex;\n /* align-items: center;*/\n justify-content: space-between;\n position: absolute;\n top: 10px;\n}\n\n/*#galleryListToolbar .filters, #tutorialListToolbar .filters {\n display: flex;\n align-items: center;\n margin-top: 5px;\n}\n\n#galleryListToolbar .filters .form-control, #tutorialListToolbar .filters .form-control {\n margin: 0 4px; !*TODO a*!\n top: 5px;\n}\n\n#galleryListToolbar .filters .form-group {\n display: flex;\n}\n\n#galleryListToolbar .filters .form-group label {\n text-align: right;\n top: 5px;\n justify-content: right;\n display: flex;\n align-items: center;\n width: 100%;\n}*/\n\n/*#galleryTable .galleryNode {\n padding: 24px;\n float: left;\n}\n\n#galleryTable .listNode td {\n display: grid;\n grid-template-columns: 150px 1fr 300px;\n grid-template-rows: 0.4fr 0.6fr 0.5fr 0.5fr;\n gap: 16px;\n grid-template-areas: \"logo description likes\" \"logo description views\" \"name author tags\" \"name date like_btn\";\n padding: 16px;\n justify-content: center;\n align-items: center;\n max-height: 200px;\n}\n\n#galleryTable .listNode td .card-view:nth-child(1) {\n grid-area: logo;\n position: relative;\n align-self: flex-start;\n}\n\n#galleryTable .listNode td .card-view:nth-child(2) {\n grid-area: name;\n align-self: flex-end;\n}\n\n#galleryTable .listNode td .card-view:nth-child(3) {\n grid-area: description;\n}\n\n#galleryTable .listNode td .card-view:nth-child(4) {\n grid-area: author;\n}\n\n#galleryTable .listNode td .card-view:nth-child(5) {\n grid-area: date;\n}\n\n#galleryTable .listNode td .card-view:nth-child(6) {\n grid-area: likes;\n}\n\n#galleryTable .listNode td .card-view:nth-child(7) {\n grid-area: views;\n}\n\n#galleryTable .listNode td .card-view:nth-child(8) {\n grid-area: tags;\n}\n\n#galleryTable .listNode td .card-view:nth-child(9) {\n grid-area: like_btn;\n}\n\n#galleryTable .listNode td .card-view:nth-child(9) .galleryLike {\n bottom: 0;\n}*/\n\n.filter, .form-control:not(#start .fixed-table-toolbar>.float-right>.form-control) {\n border: 1px solid #afca04;\n background-color: #ffffff;\n border-radius: 2px;\n height: 48px;\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.form-control:not(#start .fixed-table-toolbar>.float-right>.form-control) {\n appearance: auto;\n}\n\n#start .fixed-table-toolbar > .float-right > .form-control {\n height: 54px;\n border-color: #39378b;\n margin-left: 6px;\n}\n\n.search > label {\n white-space: nowrap;\n margin-top: 12px;\n margin-left: 6px;\n max-width: 100%;\n}\n\n.search.float-right {\n max-width: calc(100% - 100px);\n}\n\n.cardViewName {\n font-weight: bold;\n font-size: 24px;\n text-align: center;\n margin-top: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n max-height: 34px;\n min-height: 34px;\n margin-bottom: 12px;\n -webkit-hyphens: auto;\n -moz-hyphens: auto;\n hyphens: auto;\n word-break: break-all;\n}\n\n.robotName {\n font-weight: bold;\n font-size: 20px;\n text-align: center;\n min-height: 52px;\n max-height: 52px;\n}\n\n.robotImage {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 60%;\n cursor: pointer;\n}\n\n.robotImage img {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n#start button.accordion-button {\n padding: 6px 12px;\n}\n\n#start label.form-check-label {\n margin-left: 12px;\n margin-top: 4px;\n}\n\n/*************************************\n***** New Start Page 2024 ***** \n*************************************/\n\n.transition, .button-big, .button, .button-big--arrow, .button-big.icon::after, .button-big--quaternary::after, .button-big--tertiary::after, .button-big--secondary::after, .button-big--primary::after {\n transition: all 0.3s;\n}\n\n/*************************************\n***** Typography *****\n*************************************/\n\n/*************************************\n***** Headlines *****\n*************************************/\n\nh1, h2, h3, h4, h5 {\n font-weight: 700;\n}\n\nh1 {\n font-size: 30px;\n line-height: 40px;\n margin-bottom: 30px;\n}\n\nh2 {\n font-size: 30px;\n line-height: 40px;\n margin-bottom: 20px;\n}\n\nh3 {\n font-size: 30px;\n line-height: 40px;\n margin-bottom: 30px;\n}\n\nh4 {\n font-size: 20px;\n line-height: 30px;\n}\n\nh5 {\n font-size: 20px;\n line-height: 30px;\n}\n\n.tint {\n display: inline-block;\n padding: 10px 20px;\n margin: 0 -10px 0 -10px;\n mix-blend-mode: multiply;\n color: #fff;\n}\n\n.tint--primary {\n background: #39378B;\n transform: rotate(1deg);\n position: relative;\n top: 5px;\n}\n\n.tint--secondary {\n background: #FDC300;\n transform: rotate(-1deg);\n}\n\n.tint--tertiary {\n background: #33B8CA;\n transform: rotate(-2deg);\n}\n\n.tint--quaternary {\n background: #88BCE2;\n transform: rotate(1deg);\n position: relative;\n top: -8px;\n}\n\n/*************************************\n***** Paragraph & Lists *****\n*************************************/\n\np {\n font-size: 16px;\n line-height: 24px;\n margin-bottom: 15px;\n}\n\np:last-child {\n margin-bottom: 0;\n}\n\np.teaser {\n font-size: 20px;\n line-height: 30px;\n}\n\np.teaser:last-child {\n margin-bottom: 15px;\n}\n\np.teaser + .button {\n margin-top: 20px;\n}\n\n/*************************************\n***** Links *****\n*************************************/\n\na {\n color: #39378B;\n text-decoration: underline;\n}\n\n@media (hover: hover) {\n a:hover {\n cursor: pointer;\n text-decoration: none;\n }\n}\n\n/*************************************\n***** Buttons *****\n*************************************/\n\n.button-big--arrow, .button-big.icon::after, .button-big--quaternary::after, .button-big--tertiary::after, .button-big--secondary::after, .button-big--primary::after {\n content: \"\";\n height: 30px;\n width: 30px;\n background-repeat: no-repeat;\n background-size: contain;\n position: absolute;\n bottom: 15px;\n right: 20px;\n}\n\n@media (hover: hover) {\n .button-big--arrow:hover, .button-big.icon:hover::after, .button-big--quaternary:hover::after, .button-big--tertiary:hover::after, .button-big--secondary:hover::after, .button-big--primary:hover::after {\n right: 15px;\n }\n}\n\n.button {\n display: inline-block;\n border-radius: 5px;\n text-decoration: none;\n font-weight: 700;\n padding: 15px;\n}\n\n.button--light {\n color: #39378B;\n background: #fff;\n}\n\n.button.show {\n background: #39378b;\n color: #fff;\n}\n\n@media (hover: hover) {\n .button:hover {\n background: #39378b;\n color: #fff;\n }\n}\n\n.button-big {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 10px 80px 10px 15px;\n color: #000;\n text-decoration: none;\n border-radius: 5px;\n}\n\n@media (min-width: 768px) {\n .button-big {\n padding: 15px 15px 50px 15px;\n }\n}\n\n@media (min-width: 992px) {\n .button-big {\n padding: 15px 80px 15px 20px;\n }\n}\n\n.button-big--primary {\n background: rgba(57, 55, 139, 0.1);\n border: 1px solid rgba(57, 55, 139, 0.5);\n position: relative;\n}\n\n.button-big--primary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--primary:hover {\n background: rgba(57, 55, 139, 0.2);\n border: 1px solid #39378b;\n }\n}\n\n.button-big--primary.icon {\n background: #39378b;\n}\n\n.button-big--secondary {\n background: rgba(253, 195, 0, 0.1);\n border: 1px solid rgba(253, 195, 0, 0.5);\n position: relative;\n}\n\n.button-big--secondary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--secondary:hover {\n background: rgba(253, 195, 0, 0.2);\n border: 1px solid #fdc300;\n }\n}\n\n.button-big--secondary.icon {\n background: #fdc300;\n}\n\n.button-big--tertiary {\n background: rgba(51, 184, 202, 0.1);\n border: 1px solid rgba(51, 184, 202, 0.5);\n position: relative;\n}\n\n.button-big--tertiary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--tertiary:hover {\n background: rgba(51, 184, 202, 0.2);\n border: 1px solid #33b8ca;\n }\n}\n\n.button-big--tertiary.icon {\n background: #33b8ca;\n}\n\n.button-big--quaternary {\n background: rgba(136, 188, 226, 0.1);\n border: 1px solid rgba(136, 188, 226, 0.5);\n position: relative;\n}\n\n.button-big--quaternary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--quaternary:hover {\n background: rgba(136, 188, 226, 0.2);\n border: 1px solid #88bce2;\n }\n}\n\n.button-big--quaternary.icon {\n background: #88bce2;\n}\n\n.button-big.icon {\n border: none;\n color: #fff;\n padding: 15px 80px 10px 15px;\n}\n\n@media (min-width: 992px) {\n .button-big.icon {\n padding: 40px 80px 40px 40px;\n }\n}\n\n.button-big.icon::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big.icon:hover {\n box-shadow: 0 20px 50px rgba(0, 0, 0, 0.05);\n }\n}\n\n.button-big.icon svg {\n fill: #fff;\n height: 25px;\n width: auto;\n margin-bottom: 20px;\n align-self: flex-start;\n}\n\n/*************************************\n***** Sections *****\n*************************************/\n\nsection {\n width: 100%;\n}\n\n.section--white {\n background: #fff;\n}\n\n.section--light {\n background: #e9ecef;\n}\n\n#start {\n background: #fff;\n}\n\n/*************************************\n***** Banner *****\n*************************************/\n\n#startup-message-statustext {\n background: #39378B;\n color: #fff;\n position: absolute;\n z-index: 999;\n bottom: 50px;\n right: 50px;\n width: 100%;\n max-width: 450px;\n border-radius: 5px;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.25);\n}\n\n#startup-message-statustext h4, #startup-message-statustext p {\n padding: 20px;\n}\n\n/*************************************\n***** NEPO Block in Colors *****\n*************************************/\n\n.nepo {\n display: inline-block;\n}\n\n.nepo::before {\n content: \"\";\n display: inline-block;\n width: 85px;\n height: 20px;\n background-image: url(\"img/nepo.svg\");\n background-position: left bottom;\n background-repeat: no-repeat;\n background-size: contain;\n margin-right: 5px;\n}\n\n/*************************************\n***** News *****\n*************************************/\n\n.teaser-news {\n display: flex;\n background: #e9ecef;\n padding: 15px;\n border-radius: 5px;\n}\n\n@media (min-width: 992px) {\n .teaser-news {\n padding: 40px;\n }\n}\n\n.teaser-news--header {\n font-weight: 700;\n font-size: 20px;\n line-height: 30px;\n margin-bottom: 10px;\n}\n\n.teaser-news--body h3 {\n color: #39378B;\n}\n\n.teaser-news--image {\n width: 100%;\n height: auto;\n}\n\n/*************************************\n***** Footer *****\n*************************************/\n\n#start footer {\n border-top: 1px solid rgba(0, 0, 0, 0.2);\n padding-bottom: 96px;\n width: 100%;\n}\n\n#start footer img {\n width: 100%;\n}\n\n#start footer p,\n#start footer .nav-link {\n font-size: 14px;\n line-height: 20px;\n margin-right: 0;\n}\n\n#start footer .nav-item {\n background: none;\n}\n\n#start footer .nav-item:hover {\n background: none;\n}\n\n#start footer .nav-link {\n padding: 5px 0;\n color: #6c757d;\n}\n\n/*************************************\n***** Safari Flexbox Fix for 100% Height *****\n*************************************/\n@supports (background: -webkit-named-image(i)) {\n .flexbox-fix {\n display: flex;\n }\n}\n\n.galleryTable.table, .galleryTable tr {\n border: 0.75em solid #E9ECEF;\n border-collapse: collapse;\n}\n\n#share-with-gallery .galleryTable tr, #share-with-gallery .galleryTable.table {\n border-color: #fff;\n}\n\ndiv.galleryLike {\n color: #fff;\n text-align: center;\n bottom: -20px;\n}\n\ndiv.galleryLike a > span {\n color: #fff;\n}\n\nbutton.galleryLike.btn {\n color: white;\n border: 2px solid white;\n border-radius: 2px;\n opacity: 0.75;\n}\n\nbutton.galleryLike.btn:hover, button.galleryLike.btn:focus, button.galleryLike.btn:active, button.galleryLike.btn:focus:active {\n background-color: inherit;\n font-weight: 600;\n opacity: 1;\n}\n\ndiv.cardViewDescription {\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 12px;\n position: relative;\n min-height: 42px;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\ndiv.cardViewInfo {\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n}\n\ndiv.cardViewLabel {\n display: inline-block;\n min-width: 30%;\n}\n\n.galleryDescription:before, .tutorialOverview:before {\n content: '...';\n position: absolute;\n right: 0;\n bottom: 0;\n}\n\n.galleryDescription:after, .tutorialOverview:after {\n content: '';\n position: absolute;\n right: 0;\n width: 1em;\n height: 2.5em;\n margin-top: -0.3em;\n}\n\n.galleryDescription.color0:after, .tutorialOverview.color0:after {\n background: #33B8CA;\n}\n\n.galleryDescription.color1:after, .tutorialOverview.color1:after {\n background: #EBC300;\n}\n\n.galleryDescription.color2:after, .tutorialOverview.color2:after {\n background: #005A94;\n}\n\n.galleryDescription.color3:after, .tutorialOverview.color3:after {\n background: #179C7D;\n}\n\n.galleryDescription.color4:after, .tutorialOverview.color4:after {\n background: #F29400;\n}\n\n.galleryDescription.color5:after, .tutorialOverview.color5:after {\n background: #E2001A;\n}\n\n.galleryDescription.color6:after, .tutorialOverview.color6:after {\n background: #EB6A0A;\n}\n\n.galleryDescription.color7:after, .tutorialOverview.color7:after {\n background: #8FA402;\n}\n\n.galleryDescription.color8:after, .tutorialOverview.color8:after {\n background: #BACC1E;\n}\n\n.galleryDescription.color9:after, .tutorialOverview.color9:after {\n background: #9085BA;\n}\n\n.galleryDescription.color10:after, .tutorialOverview.color10:after {\n background: #FF69B4;\n}\n\n.galleryDescription.color11:after, .tutorialOverview.color11:after {\n background: #DF01D7;\n}\n\n.galleryAuthor {\n overflow: hidden;\n word-break: break-all;\n height: 22px;\n}\n\n.galleryLike.typcn:before {\n position: inherit;\n font-size: 16px;\n color: #fff;\n}\n\n.galleryTags {\n background-color: inherit;\n border: none;\n box-shadow: none;\n text-decoration: none;\n overflow: hidden;\n white-space: normal;\n padding: 0;\n height: 34px;\n line-height: 34px;\n}\n\n.galleryTags input {\n height: 0;\n}\n\n.galleryTags > .tag {\n background-color: #bbb;\n line-height: 34px;\n white-space: normal;\n}\n\n.galleryTable td {\n border: none !important;\n color: #FFFFFF;\n width: 100vw;\n position: relative;\n}\n\n#galleryPreview tr {\n width: 100%;\n}\n\n.dataTables_wrapper {\n margin: 0 68px;\n}\n\n#progList table tbody tr.selected,\n#confList table tbody tr.selected,\n#relationsList table tbody tr.selected,\n#userGroupList table tbody tr.selected,\n#userGroupMemberList table tbody tr.selected {\n background-color: #BACC1E;\n}\n\n#progList .fixed-table-container tbody .selected td,\n#userGroupList .fixed-table-container tbody .selected td,\n#userGroupMemberList .fixed-table-container tbody .selected td {\n background-color: #BACC1E;\n}\n\n#progList table tbody tr:hover td:not(td:last-child),\n#confList table tbody tr:hover td:not(td:last-child),\n#relationsList table tbody tr:hover,\n#userGroupList table tr:hover td:not(td:last-child) {\n background-color: #BACC1E;\n}\n\na.delete:hover {\n color: #E2001A;;\n}\n\na.share:hover, a.gallery:hover, a.load:hover {\n color: #BACC1E;\n}\n\n.float-right.search.btn-group {\n max-width: calc(100% - 150px);\n}\n\n/*@media only screen and (max-width: 767px) {\n !* Manually set bootstrap < sm rules *!\n !*#progListToolbar .bars.pull-left {\n margin-bottom: 68px;\n }*!\n #progListScopeSelect {\n position: absolute;\n right: 0;\n bottom: calc(-100% - 10px);\n width: calc(100vw - 32px);\n margin: 0;\n }\n}*/\n\ninput[type=range] {\n -webkit-appearance: none;\n margin: 10px 0;\n width: 100%;\n}\n\ninput[type=range]:focus {\n outline: none;\n}\n\ninput[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 8px;\n cursor: pointer;\n animate: 0.2s;\n box-shadow: 0 0 0 #000000;\n background: #BACC1E;\n border-radius: 2px;\n border: 0 solid #000000;\n}\n\ninput[type=range]::-webkit-slider-thumb {\n box-shadow: 0 0 0 #000000;\n border: 1px solid #333333;\n height: 24px;\n width: 12px;\n border-radius: 2px;\n background: #FFFFFF;\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -8.5px;\n}\n\ninput[type=range]:focus::-webkit-slider-runnable-track {\n background: #BACC1E;\n}\n\ninput[type=range]::-moz-range-track {\n width: 100%;\n height: 8px;\n cursor: pointer;\n animate: 0.2s;\n box-shadow: 0 0 0 #000000;\n background: #BACC1E;\n border-radius: 2px;\n border: 0 solid #000000;\n}\n\ninput[type=range]::-moz-range-thumb {\n box-shadow: 0 0 0 #000000;\n border: 1px solid #333333;\n height: 24px;\n width: 12px;\n border-radius: 2px;\n background: #FFFFFF;\n cursor: pointer;\n}\n\ninput[type=range]::-ms-track {\n width: 100%;\n height: 8px;\n cursor: pointer;\n animate: 0.2s;\n background: transparent;\n border-color: transparent;\n color: transparent;\n}\n\ninput[type=range]::-ms-fill-lower {\n background: #BACC1E;\n border: 0 solid #000000;\n border-radius: 4px;\n box-shadow: 0 0 0 #000000;\n}\n\ninput[type=range]::-ms-fill-upper {\n background: #BACC1E;\n border: 0 solid #000000;\n border-radius: 4px;\n box-shadow: 0 0 0 #000000;\n}\n\ninput[type=range]::-ms-thumb {\n box-shadow: 0 0 0 #000000;\n border: 1px solid #333333;\n height: 24px;\n width: 12px;\n border-radius: 2px;\n background: #FFFFFF;\n cursor: pointer;\n}\n\ninput[type=range]:focus::-ms-fill-lower {\n background: #BACC1E;\n}\n\ninput[type=range]:focus::-ms-fill-upper {\n background: #BACC1E;\n}\n\n.table-dark {\n text-transform: uppercase;\n --bs-table-bg: #898989;\n --bs-table-border-color: none;\n /* color: #ffffff;\n text-align: left;\n padding-left: 10px;*/\n}\n\n#progList table,\n#confList table,\n#showMultipleSimPrograms table thead,\n#show-relations table {\n margin: 0;\n width: 100%;\n}\n\n.updatedRow {\n color: #BACC1E;\n}\n\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td {\n padding: 9px;\n}\n\n.dataTables_scrollBody {\n border-bottom: none !important;\n}\n\n#progList .programs,\n#confList .configurations,\n#relationsList .relations {\n border-bottom: 1px solid #eee;\n}\n\n#relationsListing {\n margin-bottom: 15px;\n}\n\n#progList > h2,\n#confList > h2,\n#logList > h2 {\n margin-left: 68px;\n}\n\n\n#create-user-group .modal-body {\n margin-bottom: 1em;\n}\n\n#userGroupList .btn-group > .btn:not(.dropdown-toggle),\n#userGroupMemberList .btn-group > .btn:not(.dropdown-toggle) {\n border-radius: 2px;\n}\n\n#userGroupMemberTable .member-name:not(.active),\n#userGroupMemberTable .edit-member-name:not(.active) {\n display: none;\n}\n\n#userGroupMemberTable .btn {\n display: inline-block;\n font-size: 16px;\n height: calc(1.25em + 12px);\n vertical-align: top;\n border: none;\n margin-right: 0;\n}\n\n#userGroupMemberTable.table-hover > tbody > tr:hover {\n background-color: transparent;\n}\n\n#userGroupMemberTable .btn:focus,\n#userGroupMemberTable .btn:active {\n outline: none;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n\n#userGroupMemberTable .member-name-column {\n position: relative;\n display: inline-block;\n padding: 8px;\n margin: -8px;\n}\n\n#userGroupMemberTable tr.selected .member-name-column.active {\n background-color: rgba(255, 255, 255, .5);\n}\n\n#userGroupMemberTable .member-name {\n display: inline-block;\n padding: 7px 0;\n line-height: 1.25;\n font-size: 16px;\n margin-left: 16px;\n}\n\n#userGroupMemberTable .edit-member-name,\n#userGroupMemberTable .edit-member-name form {\n display: inline-block;\n}\n\n#userGroupMemberTable .edit-member-name form {\n margin: 0;\n padding: 0;\n}\n\n#userGroupMemberTable .edit-member-name form label.form-invalid {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n margin-bottom: 0;\n transform: translateY(100%);\n}\n\n#userGroupMemberTable .edit-member-name form label.form-invalid:after {\n top: 0;\n right: 25%;\n margin-top: 0;\n transform: translateY(-100%);\n border-bottom-color: red;\n border-top-color: transparent;\n}\n\n#userGroupMemberTable .edit-member-name input.form-control {\n font-size: 16px;\n line-height: 1.25;\n padding: 4px 12px 4px 15px;\n margin: 0;\n}\n\n#userGroupMemberTable .edit-member-name .btn.iais-loading-spin:before {\n display: inline-block;\n animation: iais-loading-spin 1.2s linear infinite;\n}\n\n#simEditButtons > .btn-group {\n width: 48px;\n height: 48px;\n vertical-align: top;\n}\n\n#simEditButtons > .btn-group.open button {\n background-color: #e7e7e7;\n}\n\n#simEditButtons > .btn-group > .dropdown-menu {\n width: 48px;\n min-width: 48px;\n margin-top: 6px;\n}\n\n#simEditButtons > .btn-group > .dropdown-menu > li > a {\n padding-left: 5px;\n padding-right: 0;\n text-align: center;\n height: 35px;\n font-size: 28px;\n text-decoration: none;\n}\n\n.simChangeObject.disabled {\n color: #bbb;\n cursor: not-allowed;\n}\n\n#simStop, #simControl.typcn-media-stop {\n color: #E2001A !important;\n}\n\n#simStop.disabled {\n color: #F6B3B9 !important;\n cursor: not-allowed;\n}\n\n.disabled a, li.disabled {\n color: #bbb; /* TODO check where this is used: color: #F6B3B9 !important;*/\n cursor: not-allowed;\n pointer-events: none\n}\n\n.disabled:hover, .disabled *:hover {\n background: inherit;\n}\n\n#simButtons > .debug {\n color: #1C5A94;\n}\n\n.typcn-media-play-outline.rotated:before {\n display: inline-block;\n transform: rotate(-90deg);\n}\n\n@keyframes iais-loading-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.pull-none .pull-right {\n margin-left: 3px;\n}\n\n.pull-none .pull-left {\n margin-right: 3px;\n}\n\n@media only screen and (max-width: 992px) {\n #main-section {\n top: 60px;\n }\n\n #logoShowStart img {\n height: 44px;\n margin-top: 8px;\n width: auto;\n }\n\n #head-navigation-tabs > li > a.active {\n border-bottom: none;\n }\n\n #head-navigation {\n padding-bottom: 8px;\n }\n\n #roberta {\n width: 80px;\n height: 90px;\n bottom: -6px;\n right: -10px;\n }\n\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 36px;\n }\n\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: inherit;\n }\n\n .modal-dialog.bigModal {\n width: 80%;\n min-width: 300px;\n }\n\n #head-navigation-tabs li {\n float: none;\n width: auto;\n overflow: hidden;\n }\n\n .log {\n margin: 16px 16px;\n }\n\n .dataTables_wrapper {\n margin: 0 16px;\n }\n\n #progList > h2,\n #confList > h2,\n #relationsList > h2,\n #logList > h2 {\n margin-left: 16px;\n }\n\n .navbar-fixed-bottom {\n border: 0;\n padding: 16px 16px;\n margin-bottom: 0;\n }\n\n .simWindow {\n left: 6px;\n top: 60px;\n }\n}\n\n@media only screen and (max-width: 992px) {\n .border-dotted {\n border-right: 0;\n }\n}\n\n/*.modal-header h4 {\n font-size: 1em;\n}*/\n\nimg.img-responsive {\n height: 140px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 768px) {\n #show-startup-message .slick-prev {\n left: -25px;\n }\n\n #show-startup-message .slick-next {\n right: -25px;\n }\n\n #show-startup-message #popup-robot-container {\n margin-left: 25px;\n margin-right: 25px;\n }\n}\n\n@media only screen and (max-width: 480px) {\n #show-startup-message .slick-slide.slick-center {\n transform: scale(1);\n }\n\n .robot-container {\n margin: 20px 8px;\n }\n}\n\n.enjoyhint_close_btn {\n border: 2px solid #BACC1E;\n}\n\n.enjoyhint_close_btn:active, .enjoyhint_close_btn:hover {\n background: #C7D92B;\n}\n\n@media print {\n div#show-startup-message {\n display: none !important;\n }\n\n svg.blocklySvg {\n overflow: visible;\n }\n\n .navbar {\n display: block;\n }\n\n .nav {\n display: block;\n }\n\n .headNavigationTabs {\n margin-top: 59px;\n z-index: 1\n }\n\n .navbar-collapse {\n padding-right: 10px;\n padding-left: 10px;\n }\n\n .collapse {\n display: block;\n visibility: visible;\n }\n\n #blocklyDiv {\n border: none;\n }\n\n div#simButtonsCollapse {\n display: none;\n }\n\n .blocklyToolboxDiv {\n display: none !important;\n }\n\n .blocklyMainBackground {\n stroke: none !important;\n }\n\n #rightMenuDiv {\n display: none;\n }\n\n g.blocklyButtons {\n display: none;\n }\n\n .blocklyMainBackground {\n stroke: none;\n }\n\n a#tabConfiguration {\n display: none;\n }\n\n .nav-tabs > li {\n width: 100%;\n }\n\n #headNavigationTabs {\n border: none;\n }\n\n #head-navigation-tabs > li > a.active {\n border-bottom: 2px solid #000;\n }\n\n g.blocklyBlockCanvas {\n transform: translate(-200px, -50px);\n }\n\n div#releaseInfo {\n display: none;\n }\n}\n\n/***** Overwrite prettify-CSS *****/\n\nli.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 {\n list-style-type: inherit !important;\n}\n\n#tutorialRoberta {\n width: 200px;\n height: 200px;\n position: absolute;\n bottom: -15%;\n right: -5%;\n background-image: url(../css/svg/Roberta_zwinkernd.svg);\n background-repeat: no-repeat;\n background-size: 200px;\n}\n\n.tutorialLevelStars {\n position: relative;\n}\n\n.tutorialLevel.typcn::before {\n position: relative;\n left: 0;\n font-size: 24px;\n top: 0;\n color: #FFFFFF;\n display: table-cell;\n}\n\n#tutorialOverview .modal-dialog {\n border: 2px solid #33B8CA;\n font-size: 16px;\n}\n\n#tutorial-navigation, #tutorialEnd {\n display: none;\n}\n\n#head-navigation, #tutorial-navigation {\n /* box-shadow: 0 3px 5px #aeaeaf;\n -webkit-box-shadow: 0 3px 5px #aeaeaf;\n border: 0;\n margin: 0;\n}\n\n#head-navigation {\n /* display: none; /* not needed in the tutorial form*/\n}\n\n#tutorial-navigation ul {\n margin: 16px;\n}\n\nul#tutorial-close {\n float: right;\n}\n\n#tutorialEnd a:before {\n line-height: 42px;\n font-size: 1.5em;\n}\n\n#tutorial-header, .step, #tutorial-close {\n color: #333;\n}\n\n#tutorial-navigation li {\n text-align: center;\n}\n\n#tutorial-navigation li:last-child a:before {\n position: absolute;\n top: 3px;\n right: 3px;\n}\n\n#tutorial-navigation li.step {\n text-align: center;\n float: left;\n background: #EAF0BB;\n list-style: none;\n padding: 0;\n height: 48px;\n}\n\n#tutorial-navigation li.step.active {\n background: #BACC1E;\n}\n\n#tutorial-navigation li a {\n width: 48px;\n height: 48px;\n padding: 6px 8px 6px 16px;\n font-size: 24px;\n display: inline-block;\n font-weight: bold;\n box-sizing: border-box;\n float: left;\n margin: 0 0 0 -15px;\n color: inherit;\n text-decoration: none;\n}\n\n#tutorial-navigation li:first-child a {\n width: 48px;\n margin-left: 0;\n}\n\n#tutorial-navigation li.step:after {\n background-image: url(../css/svg/step_connector.svg);\n content: \" \";\n width: 17px;\n height: 48px;\n display: inline-block;\n}\n\n#tutorial-navigation li.step.last:after {\n background-image: url(../css/svg/step_connector_last.svg);\n}\n\n#tutorial-navigation li.step.active:after {\n background-image: url(../css/svg/step_connector_active.svg);\n}\n\n#tutorial-navigation li.step.preActive:after {\n background-image: url(../css/svg/step_connector_before_active.svg);\n}\n\n#tutorial-navigation li.step.last.active:after {\n background-image: url(../css/svg/step_connector_active_last.svg);\n}\n\n#tutorial-navigation .navbar-nav > .active > a, #tutorial-navigation .navbar-nav > li > a:hover {\n color: #333;\n background-color: transparent;\n}\n\n#tutorialNavs {\n left: 60px;\n position: relative;\n}\n\n#tutorial-navigation a.typcn.typcn-delete {\n color: #333;\n font-size: 36px;\n position: absolute;\n border: white solid 6px;\n background: white;\n top: 24px;\n text-decoration: none;\n}\n\n#tutorial-header { /**/\n overflow: hidden;\n height: 92px;\n margin: 0;\n line-height: 76px;\n vertical-align: middle;\n}\n\n#tutorialOverview > .modal-backdrop.fade.in {\n opacity: 0.6;\n}\n\n#tutorialDiv.fromRight {\n background-color: #eee;\n}\n\n#tutorialContent {\n background-color: #fff;\n height: 100%;\n margin: 10px;\n padding: 16px;\n font-size: 16px;\n overflow-y: auto;\n}\n\n#tutorialContent .tip {\n list-style-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzAiIHdpZHRoPSIzMiIgdmlld0JveD0iMCAwIDMyIDMwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzFhMWExODt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkZsb3JpYW48L3RpdGxlPjxnIHRyYW5zZm9ybT0ic2NhbGUoMC4xKSIgaWQ9IkViZW5lXzIiIGRhdGEtbmFtZT0iRWJlbmUgMiI+PGcgaWQ9IkViZW5lXzEtMiIgZGF0YS1uYW1lPSJFYmVuZSAxIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMDQuNDUsMTgyLjYxYTIxLjE5LDIxLjE5LDAsMSwxLDYuMjEtMTUsMjEuMTgsMjEuMTgsMCwwLDEtNi4yMSwxNW0yLjcxLTMyLjY4YTI1LDI1LDAsMSwwLDUuNDMsOC4xMiwyNS4wOSwyNS4wOSwwLDAsMC01LjQzLTguMTIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zMTYsMTYuN2ExLjc1LDEuNzUsMCwwLDEtLjk0LjIzSDI5MS40M1YxMy4zNUgzMTVBMS43OSwxLjc5LDAsMCwxLDMxNiwxNi43bS0zMi4yMS0xMGE5LjEsOS4xLDAsMCwwLTEuOC0uMzFjLS42NywwLTEuMDYsMC0xLjU2LDBIMjU4LjUzYTcuOTMsNy45MywwLDAsMSw0LTIuMzUsMTEuMDcsMTEuMDcsMCwwLDEsMi44Ni0uMmgxNC4wOGMuMjksMCwuNDcsMCwuNywwYTcuNzYsNy43NiwwLDAsMSwxLjMyLjIsOCw4LDAsMCwxLDQuNCwyLjg0LDguMTMsOC4xMywwLDAsMSwuODYsMS4zNyw4LjYxLDguNjEsMCwwLDAtMy0xLjU0bTIuMTEsMTYuNzJhNy45NCw3Ljk0LDAsMCwxLTQuNDMsMi44LDExLjE5LDExLjE5LDAsMCwxLTIuODYuMkgyNjQuNTFsLS43LDBhNy4yNiw3LjI2LDAsMCwxLTEuMzItLjIsNy45Miw3LjkyLDAsMCwxLTQtMi4zM2gyMi4zOWExMS41MSwxMS41MSwwLDAsMCwxLjY5LS4wOSw4LjY0LDguNjQsMCwwLDAsMS43OC0uNDRBOC41NCw4LjU0LDAsMCwwLDI4Ni43NywyMmE3LjMxLDcuMzEsMCwwLDEtLjg5LDEuNG0tMjkuNDctNVYxMS43OGE4LDgsMCwwLDEsLjE2LTEuNTZoMjMuODNhNy40Nyw3LjQ3LDAsMCwxLDIuMzIuMTgsNC45Miw0LjkyLDAsMCwxLC4zNSw5LjM2LDQuODYsNC44NiwwLDAsMS0xLC4yNSw3LjM3LDcuMzcsMCwwLDEtMS4xNywwSDI1Ni41N2E4LDgsMCwwLDEtLjE2LTEuNjZtLTMuNzEsMS42NkgyMDUuMjJsLTQuOS05Ljg0SDI1Mi43YTExLjk0LDExLjk0LDAsMCwwLS4xMiwxLjU2VjE4LjRhMTEuNiwxMS42LDAsMCwwLC4xMSwxLjY2TTE2NC43OCw0NS44M2EzNy4xMSwzNy4xMSwwLDAsMC0xOC40NC0xMC45NGMtLjgxLS4yLTEuNjQtLjM3LTIuNDctLjUxTDE5NS4zMiw4Ljc3LDIwNCwyNi4yOFptMzAuNTcsMTMyLjk1YTI5LjUsMjkuNSwwLDAsMS0uMzEsMy41MSwyMS4zNCwyMS4zNCwwLDAsMS01Ljg0LDEyLjI3QTIwLjg1LDIwLjg1LDAsMCwxLDE3Ni43NSwyMDBhMzQuMTgsMzQuMTgsMCwwLDEtMy41Ni4yM2gtNTQuNnYtNi4wNmMuMjQtLjI2LjQ2LS41My43LS44aDQ1YzEuMSwwLDIuMzEsMCwzLjQ5LS4wOGEyOSwyOSwwLDAsMCwzLjU3LS40MywyMy4wOSwyMy4wOSwwLDAsMCw2LjkyLTIuNDFBMTguNjksMTguNjksMCwwLDAsMTg0LDE4NS42YTIxLjA2LDIxLjA2LDAsMCwwLDMuNDMtNi41MiwyNi44NCwyNi44NCwwLDAsMCwxLjI5LTcuMTNWMzguMmw2LjYyLTMuMjlWMTc3LjE5YzAsLjA3LDAsLjE5LDAsLjIxdi4wOWwwLC40MmMwLC4yOSwwLC41NywwLC44N20tNzcuODYsMTAuNzVoLS4zN1YxOTBhMzYuNzgsMzYuNzgsMCwwLDEtMi41LDIuNzksMzYuNSwzNi41LDAsMSwxLDIuODctMy4yNk02NC4xNSwyNjMuMlYxOTcuODJhMzkuMzIsMzkuMzIsMCwwLDAsNTAuNjEsMFYyNjMuMkg2NC4xNVptNjUsMy44M2EzMC43MSwzMC43MSwwLDAsMSwzMC4zNSwyNS43MWMuMTMuNzkuMjMsMS41OC4zLDIuMzhsLjA1Ljc1SDE5LjA4bDAtLjM3LjA1LS42YTMwLjc3LDMwLjc3LDAsMCwxLDI4LjQ0LTI3LjhDNDguNCwyNjcsNDkuMTgsMjY3LDUwLDI2N2g3OS4xM1pNNTAuMDksMTY2LjQ2QTYwLjQxLDYwLjQxLDAsMCwxLDI1LjE5LDYxLjYxLDM2LjUyLDM2LjUyLDAsMCwwLDI0LDcwLjg2YTM3LDM3LDAsMCwwLDI4LjE3LDM2LDM3LjQxLDM3LjQxLDAsMCwwLDYuMDcsMWMxLC4wOCwyLjA2LjEsMy4wNi4xaDc1Ljg4YzEsMCwyLDAsMy4wNi0uMWEzNy40MiwzNy40MiwwLDAsMCw2LjA3LTEsMzUuMzgsMzUuMzgsMCwwLDAsNC41My0xLjQzdjYwLjMxSDEyOC44MWEzOS4zOSwzOS4zOSwwLDAsMC03OC43My43NW0xMzQuNzksNS4zMUEyMC4xOCwyMC4xOCwwLDAsMSwxODEsMTgzLjIzYTE0LjgzLDE0LjgzLDAsMCwxLTQuNTMsMy44NSwxOC45MiwxOC45MiwwLDAsMS01Ljc2LDIsMjYsMjYsMCwwLDEtMy4xMi4zOWMtMS4wNS4wNy0yLjA5LjA3LTMuMjQuMDZoLTQyLjFhMzkuMTYsMzkuMTYsMCwwLDAsNi41OS0yMGgyNS44OFYxMDMuNjZhMzcsMzcsMCwwLDAsMTIuNTgtNTQuOGwxNy42LTguNzZWMTcxLjc3Wm0tMTUwLTEyMS40QTMzLjE2LDMzLjE2LDAsMCwxLDU4LjU1LDM3Ljc0Yy45Mi0uMDcsMS44My0uMDksMi43Ny0uMWg3NS44OWMuOTUsMCwxLjg1LDAsMi43Ny4xYTMzLjIyLDMzLjIyLDAsMCwxLDUuNDQsNjUuMzhBMzQsMzQsMCwwLDEsMTQwLDEwNGMtLjkyLjA3LTEuODIuMDktMi43Ny4wOUg2MS4zM2MtMSwwLTEuODUsMC0yLjc3LS4wOWEzMy45NCwzMy45NCwwLDAsMS01LjQ0LS44NywzMy4yMywzMy4yMywwLDAsMS0xOC4yLTUyLjc0TTMxNy44NiwxMC4yNEE1LjY1LDUuNjUsMCwwLDAsMzE1LDkuNTJIMjkxLjJBMTEuNzYsMTEuNzYsMCwwLDAsMjgyLjQyLjMzYTExLjg5LDExLjg5LDAsMCwwLTItLjNjLS4zMiwwLS42OSwwLTEsMEgyNjUuNDNjLS41NSwwLTEuMDYsMC0xLjc3LDBhMTIuMiwxMi4yLDAsMCwwLTIsLjI4LDExLjc0LDExLjc0LDAsMCwwLTYuNTYsNC4xNCwxMS4yNCwxMS4yNCwwLDAsMC0xLjI1LDEuOTRIMTk4LjQxTDE5NywzLjY0LDEzNi40OSwzMy43N2wwLDBINjEuMzNjLTEsMC0yLDAtMy4wNi4xQTM3LDM3LDAsMCwwLDMxLjkxLDQ4YTM2LjIyLDM2LjIyLDAsMCwwLTQuNDMsNy4yM2wtLjExLS4xNUE2NC4yNiw2NC4yNiwwLDAsMCw1MC4xNywxNzAuNGEzOS4xNCwzOS4xNCwwLDAsMCwxMC4xNiwyMy43NXY2OUg1MGMtLjg4LDAtMS43OSwwLTIuNjguMDlhMzQuNTQsMzQuNTQsMCwwLDAtMzIsMzEuMjZsLS4wNi42Ny0uMDUuOTFjMCwuODQsMCwxLjY4LS4wNSwyLjUzdi45NGMwLC4wOC4wNS4wNi4xLjA2aDEuNDJsMi40NiwwSDE2My42N2MuMDcsMCwuMDksMCwuMDgtLjA4di0uNDhsMC0yLjUyYzAtLjIxLDAtLjQyLDAtLjYzbDAtLjQ5YzAtLjIyLDAtLjQ1LDAtLjY3LS4wNy0uOS0uMTktMS43OS0uMzQtMi42OGEzMy44NCwzMy44NCwwLDAsMC0xLjI5LTUuMjQsMzQuNjEsMzQuNjEsMCwwLDAtMzIuODMtMjMuNjdIMTE4LjU5VjIwNGg1NC42NWEzOS40NSwzOS40NSwwLDAsMCw0LS4yNSwyOC43MSwyOC43MSwwLDAsMCw3LjgtMiwyMS44MSwyMS44MSwwLDAsMCw2Ljg2LTQuNSwyMi40NiwyMi40NiwwLDAsMCw0LjctNi43MSwyOC40NywyOC40NywwLDAsMCwyLjI3LTcuNzMsMzIuMjYsMzIuMjYsMCwwLDAsLjM0LTRjMC0uMzQsMC0uNjgsMC0xbDAtLjUydi0uMTRjMC0uMDYsMCwwLDAsMFYzM2wxMC01LTIuMDUtNC4xMkgyNTMuOWExMC43LDEwLjcsMCwwLDAsMS4xOCwxLjg1LDExLjc4LDExLjc4LDAsMCwwLDYuNTIsNC4yMSwxMS41LDExLjUsMCwwLDAsMiwuMjljLjMxLDAsLjY4LDAsMSwwaDE0LjA4Yy41NiwwLDEuMDYsMCwxLjc3LDBhMTEuNTQsMTEuNTQsMCwwLDAsMi0uMjgsMTEuNzYsMTEuNzYsMCwwLDAsOC44OS05LjIxSDMxNWE1LjYyLDUuNjIsMCwwLDAsMi44Mi0xMC41MiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY3Ljk0LDk2LjI2QTI0Ljc2LDI0Ljc2LDAsMSwxLDkyLjcsNzEuNDksMjQuNzYsMjQuNzYsMCwwLDEsNjcuOTQsOTYuMjYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MS40Miw3MS41QTI2LjUxLDI2LjUxLDAsMCwxLDY3Ljk0LDQ1aDBBMjYuNTEsMjYuNTEsMCwwLDEsOTQuNDUsNzEuNWgwQTI2LjUxLDI2LjUxLDAsMCwxLDY3Ljk0LDk4aDB2LTMuNWEyMywyMywwLDAsMCwyMy0yM2gwYTIzLDIzLDAsMCwwLTIzLTIzaDBhMjMsMjMsMCwwLDAtMjMsMjNoMGEyMywyMywwLDAsMCwyMywyM2gwVjk4QTI2LjUxLDI2LjUxLDAsMCwxLDQxLjQyLDcxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNjEsNjQuNTlhOS43Niw5Ljc2LDAsMSwxLTIuODYsNi45QTkuNzgsOS43OCwwLDAsMSw2MSw2NC41OU02Ny45NCw4NWExMy41LDEzLjUsMCwxLDAtOS41NS00LDEzLjQ4LDEzLjQ4LDAsMCwwLDkuNTUsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY3Ljk0LDc3LjY4QTYuMjksNi4yOSwwLDAsMCw2OS42LDY1LjMydjdINjYuMjh2LTdhNi4yOSw2LjI5LDAsMCwwLDEuNjYsMTIuMzYiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMzAuNyw5Ni4yNmEyNC43NiwyNC43NiwwLDEsMSwyNC43Ni0yNC43NkEyNC43NiwyNC43NiwwLDAsMSwxMzAuNyw5Ni4yNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNC4xOSw3MS40OUEyNi41MSwyNi41MSwwLDAsMSwxMzAuNyw0NWgwYTI2LjUxLDI2LjUxLDAsMCwxLDI2LjUxLDI2LjUxaDBBMjYuNTEsMjYuNTEsMCwwLDEsMTMwLjcsOThoMHYtMy41YTIzLDIzLDAsMCwwLDIzLTIzaDBhMjMsMjMsMCwwLDAtMjMtMjNoMGEyMywyMywwLDAsMC0yMywyM2gwYTIzLDIzLDAsMCwwLDIzLDIzaDBWOThhMjYuNTIsMjYuNTIsMCwwLDEtMjYuNTItMjYuNTJaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIzLjgsNjQuNTlhOS43Nyw5Ljc3LDAsMSwxLTIuODYsNi45LDkuNzgsOS43OCwwLDAsMSwyLjg2LTYuOU0xMzAuNyw4NWExMy41LDEzLjUsMCwxLDAtOS41NS00LDEzLjQ3LDEzLjQ3LDAsMCwwLDkuNTUsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzMC43LDc3LjY4YTYuMjksNi4yOSwwLDAsMCwxLjY2LTEyLjM2djdIMTI5di03YTYuMjksNi4yOSwwLDAsMCwxLjY2LDEyLjM2Ii8+PC9nPjwvZz48L3N2Zz4K)\n}\n\n#tutorialContent ul {\n list-style-image: none;\n}\n\n#tutorialContent a {\n color: #F29400;\n font-weight: bold;\n text-decoration: none;\n}\n\ndiv#helpDiv {\n margin-top: 24px;\n}\n\n.quiz.continue {\n margin-top: 24px;\n border-top: 1px solid #eee;\n padding-top: 10px;\n text-align: right;\n}\n\np.quiz {\n margin-top: 16px;\n}\n\n.quiz.footer {\n margin-top: 16px;\n}\n\n.quiz.footer > .btn.right {\n margin-left: 16px;\n}\n\n.quiz.answer {\n display: block;\n position: relative;\n padding-left: 34px;\n margin-top: 16px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n/* Hide the browser's default checkbox */\n\n.quiz.answer input {\n position: absolute;\n opacity: 0;\n cursor: pointer;\n}\n\n/* Create a custom checkbox */\n\n.checkmark {\n position: absolute;\n top: 2px;\n left: 2px;\n height: 25px;\n width: 25px;\n background-color: #eee;\n border-radius: 2px;\n}\n\n/* On mouse-over, add a grey background color */\n\n.quiz.answer:hover input ~ .checkmark {\n background-color: #ccc;\n}\n\n/* When the checkbox is checked, add a blue background */\n\n.quiz.answer input:checked ~ .checkmark {\n background-color: #ccc;\n}\n\n/* Create the checkmark/indicator (hidden when not checked) */\n\n.quiz.answer > .checkmark:after {\n content: \"\";\n position: absolute;\n display: none;\n}\n\n/* Show the checkmark when checked */\n\n.quiz.answer input:checked ~ .checkmark:after {\n display: block;\n}\n\n/* Style the checkmark/indicator */\n\n.quiz.answer > .checkmark:after {\n left: 10px;\n top: 5px;\n width: 6px;\n height: 14px;\n border: solid white;\n border-width: 0 3px 3px 0;\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\nlabel.quiz.answer {\n padding: 6px 10px 6px 36px;\n border-radius: 4px;\n}\n\nlabel.quiz.answer.correct {\n border: solid 2px #C7D92B;\n background-color: #C7D92B;\n padding: 4px 8px 4px 34px;\n}\n\nlabel.quiz.answer.fail {\n border: solid 2px #E2001A;\n padding: 4px 8px 4px 34px;\n}\n\n#welcomeHaribo {\n z-index: 9999;\n}\n\n#welcomeHaribo .modal-dialog {\n width: 40vw;\n}\n\n/*CSS FOR MULTIPLE SIMULATION POPUP*/\n\n#simModal .fixed-table-header {\n background-color: rgb(137, 137, 137);\n color: white;\n}\n\n#simModal .fixed-table-header table {\n color: white;\n}\n\n.lds-ellipsis {\n display: inline-block;\n position: relative;\n width: 64px;\n height: 100px;\n}\n\n.lds-ellipsis div {\n position: absolute;\n top: 27px;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background: #333;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.lds-ellipsis div:nth-child(1) {\n left: 6px;\n animation: lds-ellipsis1 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(2) {\n left: 6px;\n animation: lds-ellipsis2 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(3) {\n left: 26px;\n animation: lds-ellipsis2 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(4) {\n left: 45px;\n animation: lds-ellipsis3 0.6s infinite;\n}\n\n@keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n}\n\n@keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(19px, 0);\n }\n}\n\n/*CSS FOR MULTIPLE SIMULATION POPUP*/\n\n#simModal .fixed-table-header {\n background-color: #B3BFB8;\n}\n\n/* distance between steps in mbed/sensebox download modal: */\n\ntd[lkey=\"Blockly.Msg.POPUP_DOWNLOAD_STEP_A_SENSEBOX\"] {\n padding-bottom: 2.5em;\n}\n\n#flaskEditor {\n height: 100%; /*fix for FF calc thing*/\n}\n\n#sourceCodeEditor pre {\n position: absolute;\n top: 0;\n padding: 0;\n line-height: 18px;\n background-color: transparent;\n border: 0 solid #ccc;\n border-radius: 0;\n color: #000;\n font-family: 'Roboto', sans-serif;\n}\n\n#sourceCodeEditor .codeflask {\n height: calc(100% - 80px);\n height: -moz-calc(100% - 80px);\n height: -webkit-calc(100% - 80px);\n position: relative;\n}\n\n#sourceCodeEditor textarea {\n position: absolute;\n top: 0;\n line-height: 18px;\n font-size: 13px;\n padding: 0;\n z-index: 5;\n color: transparent;\n}\n\n#codeDiv pre {\n position: absolute;\n background-color: transparent;\n border: 0 solid #ccc;\n border-radius: 0;\n color: #000;\n font-family: 'Roboto', sans-serif;\n background-image: linear-gradient(transparent 50%, rgba(247, 247, 247, 1) 0%);\n background-size: 100% 2.77em;\n background-repeat: repeat;\n width: 100%;\n margin-top: 0;\n line-height: 18px;\n padding: 0;\n}\n\n#sourceCodeEditor .codeflask__flatten {\n padding-top: 0 !important;\n line-height: 18px;\n}\n\n#codeDiv textarea {\n position: absolute;\n z-index: 8;\n color: rgba(255, 255, 255, 0) !important;\n height: calc(100% - 82px);\n margin-top: 0;\n line-height: 18px;\n padding: 0;\n}\n\n#codeDiv .codeflask__flatten {\n background-color: #FFF0;\n padding-top: 0 !important;\n line-height: 18px;\n}\n\n#codeDiv .codeflask__lines {\n background-color: #EEE;\n z-index: 5 !important;\n}\n\n.codeflask__lines {\n background-color: #EEE;\n padding-top: 0 !important;\n z-index: 5 !important;\n}\n\n.codeflask__lines__line {\n color: #333;\n line-height: 18px !important;\n}\n\n.codeflask--has-line-numbers::before {\n z-index: 4 !important;\n}\n\npre code {\n white-space: inherit;\n}\n\n#confirm, #confirmCancel {\n text-transform: capitalize;\n}\n\n.blinking {\n animation: blinkingBackground 1.2s infinite;\n}\n\n.blinking > span {\n animation: blinkingForeground 1.2s infinite;\n}\n\n@keyframes blinkingBackground {\n 0% {\n background-color: #E2001A;\n border-bottom: 4px solid #E2001A;\n }\n 49% {\n background-color: #E2001A;\n border-bottom: 4px solid #E2001A;\n }\n 60% {\n background-color: transparent;\n border-bottom: 4px solid transparent;\n }\n 99% {\n background-color: transparent;\n border-bottom: 4px solid transparent;\n }\n 100% {\n background-color: #E2001A;\n border-bottom: 4px solid #E2001A;\n }\n}\n\n@keyframes blinkingForeground {\n 0% {\n color: #fff;\n }\n 49% {\n color: #fff;\n }\n 60% {\n color: #333;\n }\n 99% {\n color: #333;\n }\n 100% {\n color: #fff;\n }\n}\n\n#blocklyDiv.debug path.blocklyPath {\n fill-opacity: 0.3;\n}\n\n#blocklyDiv.debug path.blocklyPath.selectedBreakpoint {\n stroke-opacity: 1;\n transition: none;\n stroke: purple;\n stroke-width: 2px;\n}\n\n#blocklyDiv.debug path.blocklyPath.breakpoint {\n stroke-opacity: 1;\n transition: none;\n stroke: red;\n stroke-width: 2px;\n}\n\n.badge-primary {\n background-color: #F29400;\n}\n\n#releaseInfo {\n position: fixed;\n left: 70%;\n right: 8px;\n bottom: 60px;\n z-index: 2999;\n padding: 16px;\n background-color: #FBDE00;\n border: 1px solid #d8d8d8;\n}\n\n#releaseInfo > span {\n display: inline-block !important;\n vertical-align: middle;\n padding-right: 16px;\n}\n\n#releaseInfo > .no-button {\n position: absolute;\n top: 0;\n right: 0;\n}\n\n@media (max-width: 60em), (max-width: 800px) {\n #releaseInfo {\n left: 40%;\n }\n}\n\n.port {\n cursor: default !important;\n}\n\n#valuesContent .panel-heading {\n background-color: #dddddd;\n}\n\n#valuesContent .panel-group {\n margin: 20px 0 0 0;\n}\n\n.panel-title > a:before {\n position: relative;\n background-size: 10px;\n display: inline-block;\n width: 10px;\n height: 10px;\n content: \"\";\n margin: 0 4px 0 4px;\n background-image: url('data:image/svg+xml,minus ');\n}\n\n.panel-title > a.collapsed:before {\n background-size: 10px;\n display: inline-block;\n width: 10px;\n height: 10px;\n content: \"\";\n margin: 0 4px 0 4px;\n background-image: url('data:image/svg+xml, plus');\n}\n\n.panel-title > a {\n text-decoration: none;\n display: inline-block;\n width: 100%;\n height: 100%;\n color: inherit;\n line-height: 1.5;\n}\n\n#accordion .panel-body {\n overflow: auto;\n max-height: 50vh;\n border: none;\n}\n\n/****************************/\n\ninput,\ntextarea {\n border: 1px solid #E9ECEF;\n box-sizing: border-box;\n margin: 0;\n outline: none;\n padding: 10px;\n}\n\ninput[type=\"button\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\n\n.btn input[type=radio] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n\n.input-group {\n clear: both;\n position: relative;\n}\n\n.input-group input[type='button'] {\n background-color: #dddddd;\n transition: all 300ms ease;\n}\n\n.input-group .button-minus,\n.input-group .button-plus {\n font-weight: bold;\n height: 32px;\n width: 32px;\n padding: 0;\n}\n\n.input-group .quantity-field {\n position: relative;\n height: 32px;\n width: 32px;\n text-align: center;\n display: inline-block;\n font-size: 14px;\n resize: vertical;\n}\n\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n#nn, #nn-learn {\n width: 100%;\n height: 100%;\n}\n\n#nn .nn-middle-size {\n font-size: 20px;\n}\n\n#nn .nn-bold, #nn-learn .nn-bold {\n font-weight: bold;\n}\n\n#nn .nn-large-size {\n font-size: 28px;\n}\n\n#nn-epoch-num {\n width: 80px;\n}\n\n#nn-top-controls {\n width: 100%;\n border-bottom: 1px solid #ddd;\n padding: 16px 0;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n background: white;\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-justify-content: space-around;\n}\n\n#nn-learn-top-controls {\n width: 100%;\n border-bottom: 1px solid #ddd;\n padding: 16px 0;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n background: white;\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n}\n\n#nn-top-controls .nn-control, #nn-learn-top-controls .nn-control {\n flex-grow: 0;\n margin-left: 10px;\n margin-top: 6px;\n}\n\n#nn-show-math-all.nn-control {\n flex: 0 0 15%;\n margin-right: 10px;\n}\n\n#nn-show-next-neuron-all.nn-control, #nn-show-iteration-all.nn-control, #nn-learn-show-iteration-all.nn-control {\n margin: 0 10px;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: stretch;\n}\n\n#nn-learn-show-activation {\n width: 100px;\n padding: 8px;\n}\n\n#nn-top-controls .nn-control .label {\n color: #777;\n font-size: 13px;\n display: block;\n margin-bottom: 6px;\n font-weight: 300;\n}\n\n#nn-top-controls .nn-control .value {\n font-size: 24px;\n margin: 0;\n font-weight: 300;\n}\n\n#nn-top-controls .nn-control .select {\n position: relative;\n}\n\n.nn-input-div {\n position: relative;\n height: 36px;\n}\n\n/*.nn-explore-btns, .nn-learn-btns {\n position: absolute;\n left: 10px;\n bottom: 10px;\n z-index: 9999;\n display: flex;\n}*/\n\n/*.nn-explore-btn {\n min-height: 48px;\n max-width: 48px;\n min-width: 48px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n border: 0;\n margin: 0;\n background: white;\n}\n\n.nn-explore-btn > span, .nn-learn-btn > span {\n font-size: 36px;\n}\n\n.nn-explore-btn:hover, .nn-learn-btn:hover {\n background-color: #BACC1E;\n}*/\n\n#goto-sim, #learn-goto-sim {\n position: absolute;\n min-height: 48px;\n max-width: 48px;\n min-width: 48px;\n right: 10px;\n bottom: 10px;\n font-size: 36px;\n background-color: #ffffff;\n color: #333333;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n padding: 2px 0 0 0;\n margin: 0;\n z-index: 9999;\n}\n\n#goto-sim:hover, #learn-goto-sim:hover {\n background-color: #BACC1E;\n}\n\n.nn-selection {\n min-height: 36px;\n border: none;\n border-radius: 2px;\n background-color: #23b6ac;\n color: #ffffff;\n padding: 6px;\n}\n\n#nn-show-math {\n background-color: #f0f0f0;\n min-height: 36px;\n padding: 6px;\n border-radius: 2px;\n}\n\n#nn-show-next-neuron, #nn-show-iteration, #nn-learn-show-iteration {\n color: rgba(0, 0, 0, 0.6);\n background-color: #fafafa;\n font-weight: 300;\n text-align: center;\n}\n\n#nn-main-part, #nn-learn-main-part {\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n margin-top: 30px;\n margin-bottom: 50px;\n padding-top: 2px;\n position: relative;\n}\n\n#nn-main-part .output .mdl-checkbox__label.label, #nn-learn-main-part .output .mdl-checkbox__label.label {\n line-height: 1.7em;\n}\n\n#nn-features, #nn-learn-features {\n width: 10%;\n position: relative;\n}\n\n#nn-features .nn-plus-minus-neurons {\n position: absolute;\n line-height: 28px;\n top: -58px;\n width: 120px;\n height: 44px;\n}\n\n.nn-modal-content {\n border: 1px solid;\n background-color: #ffffff;\n}\n\n.nn-popup-modal {\n position: fixed;\n display: none;\n bottom: 0;\n left: 50%;\n transform: translate(-50%);\n max-width: 90%;\n z-index: 1;\n}\n\n.nn-modal-dialog {\n width: auto;\n}\n\nbutton.nn-btn {\n background-color: #23b6ac;\n width: 36px;\n height: 36px;\n border-radius: 2px;\n padding: 0;\n font-size: 20px;\n margin-right: inherit;\n border: none;\n color: #ffffff;\n}\n\n.nn-btn.nn-top-control-button {\n width: 27px;\n height: 27px;\n}\n\n.nn-btn.nn-cancel {\n background-color: #CD5C5C;\n}\n\n.nn-btn.nn-cancel:hover {\n background-color: #E8C0C0;\n}\n\n#nn-features .nn-plus-minus-neuron-button.active-input {\n background-color: #BACC1E;\n box-shadow: inset 0 0 2px 2px black;\n}\n\n#nn-features .nn-plus-minus-neuron-button.active-hidden {\n background-color: #c7b7b7;\n box-shadow: inset 0 0 2px 2px black;\n}\n\n#nn-features .nn-plus-minus-neuron-button.active-output {\n background-color: #f29400;\n box-shadow: inset 0 0 2px 2px black;\n}\n\n#nn-training-data-upload, #nn-test-data-upload {\n display: none;\n}\n\n/*.nn-popup-modal > .modal-backdrop {\n background-color: transparent;\n}*/\n\n.nn-table-input {\n width: 100px;\n}\n\n.nn-user-input-table-header {\n display: inline-block;\n width: 100%;\n}\n\n.nn-input-background-color {\n background: #8fa40266;\n}\n\n.nn-output-background-color {\n background: #f2940066;\n}\n\nbutton.nn-btn:hover {\n background-color: #ade7e4;\n}\n\n.nn-selection option {\n background-color: #ffffff;\n color: #333333;\n}\n\n#nn-top-controls .nn-num-layers-group {\n font-weight: bold;\n}\n\n#nn-features .nn-plus-minus-neurons .nn-plus-minus-neuron-button {\n margin-right: 4px;\n}\n\n#nn-features .nn-plus-minus-neurons .nn-plus-minus-neuron-button {\n margin-right: 4px;\n}\n\n#nn-features svg .main-label, #nn-learn-features svg .main-label {\n font-size: 13px;\n fill: #333;\n font-weight: 300;\n}\n\n#nn-features .nn-showval, #nn-learn-features .nn-showval {\n display: block;\n font-size: 16px;\n font-weight: bold;\n text-anchor: start;\n cursor: pointer;\n}\n\n#nn-features svg #markerArrow, #nn-learn-features svg #markerArrow {\n fill: black;\n stroke: black;\n stroke-opacity: 0.2;\n}\n\n#nn-features .node_input rect, #nn-learn-features .node_input rect {\n cursor: default;\n fill: rgb(143, 164, 2);\n}\n\n#nn-features .node_hidden rect, #nn-learn-features .node_hidden rect {\n cursor: default;\n fill: lightgrey;\n}\n\n#nn-features .node_output rect, #nn-learn-features .node_output rect {\n cursor: default;\n fill: rgb(242, 148, 0);\n}\n\n#nn-features .core .link, #nn-learn-features .core .link {\n stroke-dasharray: 9 1;\n stroke-dashoffset: 1;\n /* webkit-animation: 0.5s linear 0s infinite flowing; */\n}\n\n/** Invisible thick links used for showing weight values on mouse click. */\n\n#nn-features .core .nn-weight-click {\n stroke-width: 14;\n stroke: black;\n fill: none;\n opacity: 0;\n cursor: pointer;\n}\n\n.nn-input {\n position: relative;\n border: 2px solid #23b6ac;\n height: 100%;\n top: -4px;\n width: 6em;\n}\n\n#nn-learn-features .core .nn-weight-click {\n stroke-width: 14;\n stroke: black;\n fill: none;\n opacity: 0;\n cursor: pointer;\n}\n\n#nn-features .core .nn-weight-show-click {\n stroke-width: 14;\n stroke: gray;\n fill: none;\n opacity: 0.3;\n cursor: pointer;\n}\n\n#nn-learn-features .core .nn-weight-show-click {\n stroke-width: 14;\n stroke: gray;\n fill: none;\n opacity: 0.3;\n cursor: pointer;\n}\n\n.nn-bias-click {\n cursor: pointer;\n}\n\n#nn-features .canvas canvas, #nn-learn-features .canvas canvas {\n position: absolute;\n top: -2px;\n left: -2px;\n border: 2px solid black;\n border-radius: 3px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n}\n\n#nn-network {\n position: absolute;\n top: 50px;\n left: 0;\n}\n\n#nn-editCard {\n display: none;\n position: absolute;\n padding: 5px;\n border: 1px solid #aaa;\n z-index: 10;\n background: #fff;\n cursor: default;\n border-radius: 5px;\n left: 240px;\n}\n\n#nn-learn-training-bias-linechart, #nn-learn-training-weight-linechart {\n display: none;\n position: absolute;\n width: 200px;\n height: 65px;\n border: 1px solid #aaa;\n z-index: 10;\n background: #fff;\n cursor: default;\n}\n\n#nn-nameCard {\n display: none;\n position: absolute;\n padding: 5px;\n border: 1px solid #aaa;\n z-index: 10;\n background: #fff;\n cursor: default;\n border-radius: 5px;\n left: 240px;\n}\n\n#nn-name-message {\n border: 12px 4px 4px 4px;\n background: #fff;\n color: #333;\n}\n\n#nn-table-user-input input {\n width: 100px;\n}\n\n.nn-type-button {\n position: relative;\n top: 5px;\n}\n\n.nn-btn.nn-finish-button {\n position: relative;\n left: -4px;\n}\n\n.nn-metrics {\n position: relative;\n font-weight: 300;\n height: 60px;\n margin-right: 10px;\n display: flex;\n flex-basis: 25%;\n flex-wrap: nowrap;\n align-content: center;\n justify-content: space-evenly;\n}\n\n#nn-learn-training-loss-linechart {\n flex: 0 0 40%;\n max-width: 200px;\n height: 100%;\n border: 1px solid #333333;\n}\n\n.nn-output-stats {\n padding: 10px;\n}\n\n#nn-random-values-from-to {\n position: relative;\n height: 36px;\n}\n\n#nn-random-values-from-to > input {\n width: 50px;\n}\n\n#nn-random-values-from-to > span {\n position: relative;\n top: -4px;\n}\n\n#nn-random-values-from-to > .nn-random-values-finished-button {\n position: relative;\n padding-left: 5px;\n top: 0;\n}\n\n.nn-output-stats .value {\n color: rgba(0, 0, 0, 0.6);\n font-weight: 300;\n text-align: center;\n}\n\n.nn-type {\n height: 40px;\n style: \"font-size: 14px\"\n}\n\ncanvas {\n display: block;\n}\n\n.link {\n fill: none;\n stroke: #aaa;\n stroke-width: 1;\n}\n\ng.column rect {\n stroke: none;\n}\n\n@-webkit-keyframes flowing {\n from {\n stroke-dashoffset: 0;\n }\n to {\n stroke-dashoffset: -10;\n }\n}\n\n#downloadType {\n padding: 8px 20px 20px;\n text-align: center;\n}\n\n.downloadType {\n font-size: 18px;\n text-align: center;\n text-decoration: none;\n padding: 12px;\n margin: 12px;\n border: 1px solid #BACC1E;\n border-radius: 2px;\n cursor: pointer;\n width: 100%;\n}\n\n#progressBar {\n background-color: #BACC1E;\n height: 10px;\n width: 0%;\n\n}\n\n.downloadType:hover {\n background-color: #BACC1E;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["roberta.css"],"names":[],"mappings":"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","file":"roberta.css","sourcesContent":["@charset \"UTF-8\";\n*:hover,\n*:active,\n*:visited,\n*:focus,\na:focus {\n outline: 0;\n outline: none;\n}\n\nul,\nol {\n margin: 0;\n}\n\ndl.grid {\n display: grid;\n grid-template-columns: 1fr 100%;\n}\n\ndd {\n margin: 0;\n padding-left: 1em;\n}\n\ndl.grid dd {\n margin-bottom: 1em;\n}\n\ndl.grid dt {\n min-width: 140px;\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-Regular.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-Italic.ttf') format('truetype');\n font-style: italic;\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-Bold.ttf') format('truetype');\n font-weight: bold;\n}\n\n@font-face {\n font-family: 'Roboto';\n src: url('fonts/Roboto-BoldItalic.ttf') format('truetype');\n font-weight: bold;\n font-style: italic;\n}\n\nhtml,\nbody {\n display: flex;\n margin: 0;\n padding: 0;\n height: 100%;\n width: 100%;\n font-family: 'Roboto', sans-serif;\n font-size: 1em;\n}\n\n.pace {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n z-index: 3000;\n position: fixed;\n height: 12rem;\n width: 12rem;\n margin: auto;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n line-height: 12rem;\n font-size: 2rem;\n color: transparent;\n font-weight: 100;\n text-align: center;\n -webkit-animation: pace-theme-center-circle-spin linear infinite 2s;\n -moz-animation: pace-theme-center-circle-spin linear infinite 2s;\n -o-animation: pace-theme-center-circle-spin linear infinite 2s;\n animation: pace-theme-center-circle-spin linear infinite 2s;\n background-image: url(../css/img/Nepo_N.png);\n background-color: transparent !important;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n@-ms-keyframes pace-theme-center-circle-spin {\n 0% {\n -ms-transform: perspective(12rem) rotateY(0deg);\n }\n 100% {\n -ms-transform: perspective(12rem) rotateY(360deg);\n }\n}\n\n@keyframes pace-theme-center-circle-spin {\n 0% {\n transform: perspective(12rem) rotateY(0deg);\n }\n 100% {\n transform: perspective(12rem) rotateY(360deg);\n }\n}\n\nbody.blocklyMinimalBody * {\n opacity: 1 !important;\n overflow: hidden;\n transform: none;\n}\n\n/*#head-navigation, #tutorial-navigation {\n box-shadow: 0 3px 5px #aeaeaf;\n -webkit-box-shadow: 0 3px 5px #aeaeaf;\n border: 0;\n margin: 0;\n}*/\n#header {\n background-color: #ffffff;\n border: 0;\n margin: 0;\n}\n\n#header > .navbar {\n padding-bottom: 0;\n}\n\n.navbar-toggler {\n padding: 12px;\n border: none;\n}\n\n.navbar-toggler:focus {\n box-shadow: none;\n}\n\n.nav-item:hover, button#navbarButtonsHead:hover {\n background-color: #BACC1E;\n border-radius: 2px;\n border: 0;\n}\n\n#head-navigation-tabs > li > a.active {\n border-bottom: 4px solid #BACC1E;\n}\n\n/* TODO remove this when hardcoded in blockly is removed */\n.blocklyToolboxDiv {\n top: 0 !important;\n}\n\n#iconDisplayLogin,\n#iconDisplayRobotState {\n float: left;\n font-size: 24px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n margin: 0 6px;\n}\n\n.robertaLogo {\n background: url(../css/svg/logo-word.svg) no-repeat;\n}\n\n.fraunhoferLogo {\n background: url(../css/img/iais_logo.gif) no-repeat;\n}\n\n.googleLogo {\n background: url(../css/svg/Google_logo.svg) no-repeat;\n background-size: contain;\n}\n\n.NRWMinLogo {\n background: url(../css/img/AK_Schule.png) no-repeat;\n background-size: contain;\n}\n\n.imgFloatLeft {\n float: left;\n width: 210px;\n height: 65px;\n padding: 0;\n margin: 4px 16px 0 0;\n}\n\n#language.nav > li > a {\n color: #333333;\n padding: 0;\n margin: 6px;\n}\n\n#language.nav > li > a:hover,\n#language.nav > li > a:focus {\n background-color: #fff;\n}\n\n#logoShowStart img {\n display: block;\n height: 60px;\n width: 146px;\n margin: 18px;\n}\n\n.invisible {\n visibility: hidden;\n}\n\n.hidden {\n display: none;\n}\n\n\n.img-beta, .img-deprecated {\n position: absolute;\n width: auto;\n left: 10px;\n top: -5px;\n -ms-transform: rotate(-10deg);\n transform: rotate(-10deg);\n z-index: 5;\n}\n\n.new {\n background-color: #fdc300;\n max-width: fit-content;\n position: absolute;\n z-index: 99;\n top: 0;\n left: 0;\n padding: 5px 10px;\n font-size: 14px;\n border-radius: 5px 0;\n}\n\n.menuTab {\n text-transform: uppercase;\n font-weight: bold;\n}\n\n.navigation-row {\n width: 100%;\n margin: 0;\n}\n\n.scroller {\n margin: 0;\n font-size: 24px;\n cursor: pointer;\n background-color: #fff;\n padding: 8px 2px 0 28px;\n float: left;\n}\n\n#main-section {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0;\n background: #E9ECEF;\n overflow: hidden;\n top: 96px;\n padding: 0;\n}\n\n#headNavigation.show {\n max-height: 335px;\n overflow-y: auto;\n}\n\n.navbar-nav ul {\n overflow: hidden;\n overflow-y: auto;\n max-height: calc(100vh - 100px);\n}\n\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n margin-right: 2px;\n}\n\n.btn-default:hover {\n background-color: #ddd;\n border-color: #ccc;\n}\n\n#blocklyDiv, #bricklyDiv {\n /*float: left;*/\n /*width: 100%;*/\n height: 100%;\n overflow: hidden;\n background-size: 100%;\n touch-action: none;\n}\n\n.log {\n overflow: auto;\n position: fixed;\n top: 152px;\n bottom: 50px;\n margin: 16px 68px 32px 68px;\n}\n\n.canvasSim {\n position: absolute;\n left: 0;\n top: 0;\n}\n\ncanvas.border {\n border: 2px solid grey;\n}\n\n#webotsDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n}\n\n#canvasDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1;\n width: 100%\n}\n\n#sliderDiv {\n width: 20px;\n cursor: col-resize;\n z-index: 11;\n}\n\n#sliderBorder {\n width: 6px;\n z-index: 8;\n background-color: #C0C0C0;\n}\n\n.codeActive > pre {\n width: 100%;\n height: 100%;\n word-wrap: inherit;\n}\n\n.fromRight {\n float: right;\n height: 100%;\n width: 0;\n background-color: #d8d8d8;\n display: none;\n position: relative;\n z-index: 10;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n}\n\n#infoDiv.fromRight {\n background-color: #eee;\n}\n\n.fromRight.rightActive {\n height: 100%;\n overflow: hidden;\n display: block;\n}\n\n#codeContainer {\n overflow-y: auto;\n height: 100%;\n}\n\n#codeContent {\n overflow-y: auto;\n padding-bottom: 60px;\n padding-top: 12px;\n background-color: #eee;\n}\n\n#infoContent {\n border: solid 10px #eee;\n border-top: none;\n background-color: #fff;\n overflow: auto;\n height: inherit;\n width: inherit;\n -webkit-user-select: text;\n user-select: text;\n}\n\n#infoContent[data-placeholder]:before {\n color: #555;\n padding: 0 12px;\n}\n\n#infoToolbar {\n border: solid 10px #eee;\n}\n\n#legalDiv {\n overflow-y: scroll;\n background-color: #fff;\n padding-top: 1.5rem;\n}\n\n#legalDiv > *:not(#legalDivHeader) {\n padding: 1rem;\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n#legalDiv > #legalDivHeader {\n text-align: center;\n font-size: 1.25em;\n}\n\n#legalDiv > #legalDivHeader > a {\n padding: 0 1rem;\n}\n\n#helpDiv ul {\n list-style-type: none;\n display: table;\n}\n\n#helpDiv li {\n display: table-row;\n}\n\n#helpDiv li:before {\n display: table-cell;\n padding-right: 6px;\n}\n\n#helpContent {\n padding: 10px 0;\n overflow-y: auto;\n height: 100%;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #fff;\n}\n\n#helpContent h3,\n#helpContent h2 {\n padding-left: 10px;\n padding-top: 25px;\n border-top: 1px solid #F29400;\n}\n\n#helpContent p,\n#helpContent h4 {\n margin-left: 8px;\n margin-right: 12px;\n}\n\n#helpContent h4 {\n margin-top: 18px;\n}\n\n.selectedHelp {\n background-color: #f0f0f0;\n}\n\n#rightMenuDiv {\n position: absolute;\n top: 32px;\n right: 0;\n z-index: 9;\n}\n\n#mbedContent,\n#valuesContent {\n background-color: #fff;\n border: 2px solid #33b8ca;\n padding: 12px 14px 12px 12px;\n border-radius: 2px;\n display: inline-block;\n}\n\n#valuesContent {\n min-width: 330px;\n overflow-y: auto;\n}\n\n.customDropdown {\n border: 1px solid #333;\n border-radius: 2px;\n background-color: #fff;\n}\n\n.rightMenuButton {\n width: 40px;\n height: 40px;\n background: #C0C0C0;\n position: relative;\n margin-bottom: 6px;\n -moz-border-radius: 2px;\n -webkit-border-radius: 2px;\n border-radius: 2px;\n z-index: 12;\n}\n\n.rightMenuButton:before {\n content: \"\";\n position: absolute;\n right: 100%;\n top: 14px;\n width: 0;\n height: 0;\n border-top: 5px solid transparent;\n border-right: 6px solid #333;\n border-bottom: 5px solid transparent;\n}\n\n.rightMenuButton.rightActive {\n color: #E2001A;\n}\n\n.rightMenuButton.rightActive:before {\n border-top: 5px solid transparent;\n border-left: 6px solid #333;\n border-bottom: 5px solid transparent;\n right: -6px;\n}\n\ndiv.rightMenuButton:hover,\n.rightMenuButton:active {\n cursor: pointer;\n}\n\n.rightMenuButton > .typcn {\n position: relative;\n top: 8px;\n font-size: 24px;\n left: 7px;\n}\n\n#tutorialButton.rightMenuButton, #infoButton.notEmpty {\n background-color: #BACC1E;\n}\n\n#tutorialButton.rightMenuButton:before, #infoButton.notEmpty:before {\n border-right: 6px solid #BACC1E;\n}\n\n.menu-icons {\n font-size: 24px;\n line-height: 24px;\n color: #fff;\n border: 0;\n margin: 0;\n}\n\n#toastContainer {\n position: absolute;\n top: 0;\n left: 50%;\n}\n\n#toastLeftContainer {\n position: relative;\n top: 0;\n left: -50%;\n padding: 0;\n margin: 0;\n}\n\n#toastLeftContainer span {\n font-size: 16px;\n z-index: 9999;\n color: #333333;\n white-space: nowrap;\n background-color: #fff;\n padding: 8px;\n}\n\n#show-startup-message {\n z-index: 1039;\n}\n\n#show-startup-message #popup-robot-container {\n margin-left: 100px;\n margin-right: 100px;\n}\n\n#show-startup-message .popup-robot {\n background-color: #fff;\n color: #333;\n}\n\n#show-startup-message .popup-robot.robotSpecial {\n background-color: transparent;\n color: #000;\n}\n\n#slick-container {\n background: #33B8CA;\n}\n\n.slick-list {\n padding-top: 12px !important;\n padding-bottom: 12px !important;\n}\n\n.slick-dots {\n bottom: inherit;\n top: 160px;\n}\n\n#show-startup-message .slick-slide {\n transform: scale(1);\n transition: .3s ease-in-out all;\n opacity: 1;\n}\n\n#show-startup-message .slick-slide.slick-center {\n transform: scale(1.2);\n}\n\n#show-startup-message .slick-prev {\n left: -100px;\n top: 45%;\n}\n\n#show-startup-message .slick-next {\n right: -100px;\n top: 45%;\n}\n\n#show-startup-message .slick-next:before,\n#show-startup-message .slick-prev:before {\n color: #000;\n font-size: 25px;\n}\n\n#show-startup-message .popup-robot a {\n position: relative;\n bottom: 20px;\n right: 75px;\n color: #000;\n font-size: 25px;\n}\n\n#show-startup-message .popup-robot.robotSpecial a {\n left: 86px;\n top: 20px;\n}\n\n#show-startup-message .robot-info {\n font-size: 24px;\n position: relative;\n}\n\n#startPopupBack {\n font-size: 36px;\n position: relative;\n bottom: 50px;\n text-decoration: none;\n color: #333;\n}\n\n#show-startup-message .modal-dialog {\n border: 2px solid #33B8CA;\n}\n\n.wait,\n.ok {\n color: #33B8CA;\n}\n\n.error {\n color: #333;\n}\n\n@-webkit-keyframes blinker {\n from {\n color: #afca04;\n }\n to {\n color: #e2001a;\n }\n}\n\n@keyframes blinker {\n from {\n color: #F29400;\n }\n to {\n color: #e2001a;\n }\n}\n\n.busy {\n -webkit-animation-name: blinker;\n -webkit-animation-iteration-count: infinite;\n -webkit-animation-timing-function: cubic-bezier(1.0, 0, 0, 1.0);\n -webkit-animation-duration: 1s;\n animation-name: blinker;\n animation-duration: 1s;\n animation-timing-function: cubic-bezier(1.0, 0, 0, 1.0);\n animation-iteration-count: infinite;\n}\n\n.menuDisabled {\n background-color: #fff;\n}\n\n.dropdown-toggle.disabled:hover,\n.dropdown-toggle.disabled:focus {\n text-decoration: none;\n cursor: default;\n background-color: white !important;\n background-image: none;\n}\n\n.bottomLeftButtons {\n left: 12px;\n position: absolute;\n bottom: 6px;\n z-index: 99;\n display: flex;\n}\n\n#simEditButtons {\n left: 12px;\n top: 10px;\n position: absolute;\n z-index: 99;\n}\n\n#simEditButtons button span:before {\n font-size: 36px;\n}\n\n.simAddMarker span {\n font-size: 12px;\n display: inline-block;\n min-width: 16px;\n}\n\nbutton#simCustomColorObject span.typcn:before {\n color: #FBED00;\n}\n\nbutton#simCustomObstacle.typcn:before {\n color: #009EE3;\n}\n\n.huebee__container {\n position: absolute;\n left: 0;\n top: 6px;\n padding: 24px 10px 10px;\n background: #e7e7e7;\n border-radius: 2px;\n box-shadow: none;\n}\n\n.huebee__cursor {\n border: 5px solid #fff;\n border-radius: 2px;\n width: 30px;\n height: 30px;\n}\n\n.huebee {\n /* disable reveal/hide transition */\n transition: none;\n}\n\n.huebee__close-button {\n display: block;\n position: absolute;\n width: 24px;\n height: 24px;\n top: 0;\n right: 0;\n border-radius: 0;\n background: none;\n}\n\n.huebee__close-button__x {\n stroke-width: 2;\n stroke: #bbb;\n}\n\n.huebee__close-button__x:hover, .huebee__close-button__x:focus {\n stroke: #333;\n}\n\n.huebee__close-button:hover, .huebee__close-button:focus {\n background: #e7e7e7;\n}\n\n#codeButtons {\n left: 12px;\n bottom: 0;\n position: absolute;\n z-index: 99;\n width: 100%;\n background-color: #EEE;\n height: 70px;\n padding-top: 10px;\n}\n\n.btn-group-vertical > .btn.simbtn {\n margin: 8px 0;\n}\n\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-bottom: 5px;\n}\n\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n\n/***** BEGIN Overwrite Bootstrap-CSS *****/\n\n/* .tab-content > .tab-pane:not(.active),\n.pill-content > .pill-pane:not(.active) {\n display: block;\n height: 0;\n overflow-y: hidden;\n} */\n.tooltip > .tooltip-inner {\n background-color: #333;\n}\n\n.tooltip > .tooltip-arrow {\n border-right-color: #333;\n}\n\n/*.container-fluid {\n padding-right: 16px;\n padding-left: 16px;\n}*/\n\n.nav-tabs > li + li {\n margin: 0;\n}\n\n#toolboxDiv {\n -webkit-overflow-scrolling: touch;\n}\n\n#toolboxDiv > .nav-tabs {\n border: 0;\n}\n\n#toolboxDiv > .nav-tabs li {\n width: 50%;\n text-align: center;\n border: none;\n}\n\n#toolboxDiv > .blocklyToolboxDiv {\n position: relative !important;\n}\n\n#toolboxDiv > .nav-tabs li > a.active {\n background-color: #E9ECEF;\n color: #333333;\n}\n\n#toolboxDiv > .nav-tabs li > a {\n background-color: #C0C0C0;\n color: #fff;\n margin: 0;\n padding: 6px 0;\n border: none;\n border-radius: 0;\n}\n\n/*#blocklyDiv .blocklyTreeRoot {\n padding: 6px 0;\n}*/\n\n.blocklyFlyoutBackground {\n fill-opacity: 0.925 !important;\n}\n\n.head-navi-icons:before {\n margin-right: 2px;\n}\n\n\n/*.nav#head-navigation-tabs {\n position: relative;\n width: auto;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n.nav#head-navigation-tabs > li > a {\n margin: 0;\n border: 0;\n padding: 8px 16px 4px 16px;\n border-radius: 2px 2px 0 0;\n border-bottom: 4px solid #fff;\n background-color: #fff;\n}\n\n.nav#head-navigation-tabs > li > a:hover,\n.nav#head-navigation-tabs > li > a:active,\n.nav#head-navigation-tabs > li > a:focus {\n border-bottom: 4px solid #eee;\n background-color: #eee;\n}\n\n\n.nav#head-navigation-tabs > li.active > a:hover,\n.nav#head-navigation-tabs > li.active > a:active,\n.nav#head-navigation-tabs > li.active > a.focus {\n background-color: #BACC1E;\n border-bottom: 4px solid #BACC1E;\n}\n\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n padding: 12px;\n margin: 4px 4px 4px 16px;\n}\n\n.navbar-toggle ~ .navbar-toggle {\n margin: 4px 4px 4px 0;\n}\n\n.navbar-default .navbar-toggle:not(:first-child) {\n margin: 4px 4px 4px 4px;\n}\n\n.navbar-default {\n background-color: #fff;\n}\n\n.navbar-default .navbar-nav > li > a:hover {\n background-color: #BACC1E;\n}\n\n.navbar-default .navbar-toggle:hover {\n background-color: #BACC1E;\n}\n\n.navbar-fixed-bottom {\n border: 0;\n padding: 16px 68px;\n margin-bottom: 20;\n}\n\n.head-navi-title {\n margin-left: 6px;\n}\n\n.collapse.in > .nav li a {\n color: #333;\n}\n\n.collapse.in > .nav li.disabled a {\n color: #bbb;\n}*/\n\n.dropdown-menu:not(.editor) {\n border-radius: 2px;\n}\n\n.dropdown-menu > li > a > span.kbd {\n position: absolute;\n right: 20px;\n bottom: 0.4em;\n font-size: 0.8em;\n float: right;\n}\n\n#head-navigation-program-edit .dropdown-menu > li > a, #head-navigation-configuration-edit .dropdown-menu > li > a {\n position: relative;\n padding-right: 70px;\n}\n\n.dropdown-menu > li:not(.disabled) > a:hover,\n.dropdown-menu > li:not(.disabled) > a:focus {\n background-color: #BACC1E !important;\n}\n\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #bbb;\n}\n\n#tokenValue {\n text-transform: uppercase\n}\n\n#roberta {\n background-image: url(/css/img/Roberta_ears_up.png);\n width: 160px;\n height: 180px;\n background-repeat: no-repeat;\n position: absolute;\n bottom: -12px;\n right: -20px;\n background-size: contain;\n}\n\n#version-info {\n position: absolute;\n top: 16px;\n right: 60px;\n font-size: 24px;\n font-weight: 500;\n}\n\n.cover {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 2000;\n background-color: #ddd;\n}\n\n.connector {\n margin-top: 19px;\n position: absolute;\n right: 5%;\n z-index: 900;\n fill: #BACC1E;\n}\n\n.border-dotted {\n border-right: 1px dashed #afca04;\n}\n\n.popupTitel {\n margin-top: 20px;\n margin-bottom: 10px;\n text-align: center;\n}\n\n.popup-checkbox {\n color: #bbb;\n font-size: 14px;\n padding: 0 !important;\n padding-bottom: 16px !important;\n}\n\n.download-checkbox {\n color: #bbb;\n font-size: 14px;\n padding-bottom: 16px !important;\n padding-left: 16px !important;\n width: 100%;\n}\n\n.popup-checkbox input,\n.download-checkbox input {\n position: relative;\n top: 2px;\n margin-right: 6px;\n margin-bottom: 6px;\n}\n\n.popup-checkbox label,\n.download-checkbox label {\n font-weight: normal;\n display: initial;\n}\n\n.download-checkbox ul {\n list-style: none;\n}\n\n#download-instructions {\n list-style-type: none;\n padding: 0;\n margin: 32px 16px 0 16px;\n}\n\n#download-instructions li {\n font-size: 20px;\n margin-bottom: 48px;\n padding-left: 2em;\n position: relative;\n}\n\n#download-instructions .typcn-Roberta::before {\n position: absolute;\n left: 0;\n padding-top: 4px;\n}\n\n#programLink a {\n text-decoration: underline;\n color: #337ab7;\n}\n\n.clearer {\n clear: both;\n}\n\n.simWindow {\n position: absolute;\n left: 50px;\n top: 200px;\n z-index: 99;\n display: none;\n}\n\n.simWindow#simValuesWindow button.close {\n top: 4px;\n right: 14px;\n position: absolute;\n}\n\n.simWindow#simRobotWindow button.close {\n top: 4px;\n right: 16px;\n position: absolute;\n z-index: 99999;\n}\n\n#VariablesContent {\n height: 300px;\n overflow: auto;\n width: auto;\n}\n\n#simValuesContent label {\n display: inline-block;\n width: 150px;\n margin-right: 6px;\n margin-left: 10px;\n}\n\n#simValuesContent div > div {\n white-space: nowrap;\n max-height: 70vh;\n}\n\n#simValuesContent span {\n display: inline-block;\n padding: 0 6px;\n width: 60px;\n}\n\n.bigNumber {\n color: #8fa402;\n font-size: large;\n font-weight: bold;\n}\n\n.simWindow .modal-dialog {\n width: max-content;\n min-width: max-content;\n margin: 0;\n pointer-events: all;\n}\n\n.simWindow text {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.simWindow div {\n width: 100%;\n}\n\n.modal-backdrop.in {\n opacity: .3;\n}\n\n.modal-content {\n border: 0;\n border-radius: 2px;\n}\n\n.modal-body {\n padding: 0 16px;\n}\n\n.modal-body.left-inner-addon {\n word-break: break-word;\n}\n\n#startup-message-statustext h4 {\n font-weight: 500;\n}\n\n.modal-header,\n.modal-footer {\n border: none;\n padding: 16px 16px 20px;\n text-align: left;\n}\n\n.modal-header {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.modal-footer {\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n}\n\n.form-control:focus, .form-select:focus {\n box-shadow: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n -moz-transition: none;\n -webkit-transition: none;\n border: 1px solid #afca04;\n}\n\n.modal-footer {\n justify-content: space-between;\n}\n\n.with-devider {\n margin-top: 10px;\n}\n\n.btn-toolbar.editor {\n padding: 10px 0 0 0;\n background-color: #eee;\n}\n\n.btn-info, .btn-default.show {\n background-color: #afca04;\n border-color: #afca04;\n}\n\n.btn.btn-link.btn-user {\n background-color: transparent;\n color: var(--bs-btn-color);\n text-decoration: none;\n padding: 0\n}\n\n.btn.btn-link.btn-user:hover, .btn.btn-link.btn-user:focus, .btn.btn-link.btn-user:hover:focus {\n text-decoration: underline;\n background-color: transparent;\n color: var(--bs-btn-hover-color);;\n}\n\n.btn {\n border-radius: 2px;\n}\n\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-color: #afca04;\n border-color: #afca04;\n}\n\na.btn.editor {\n display: flex;\n align-items: center;\n}\n\n.btn:hover:not(.editor, .start),\n.btn:active:focus:not(.editor, .start),\n.btn:focus:not(.editor, .start),\n.btn .focus:not(.editor, .start),\n.btn:active:not(.editor, .start),\n.btn .active:not(.editor, .start),\n.open > .dropdown-toggle .btn:not(.editor, .start) {\n background-color: #C7D92B;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n outline: none;\n}\n\n.btn:not(.editor, .galleryLike, .start) {\n margin-right: 16px;\n margin-left: 0;\n background-color: #BACC1E;\n color: #fff;\n font-size: 16px;\n border: none;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n cursor: pointer;\n}\n\nbutton.editor {\n background-color: #dedede;\n border-radius: 2px;\n}\n\nbutton.editor:hover {\n background-color: #eee;\n}\n\n.simbtn.btn:hover,\n.simbtn.btn:active:focus,\n.simbtn.btn:focus,\n.simbtn.btn.focus,\n.simbtn.btn:active,\n.simbtn.btn.active,\n.open > .dropdown-toggle.simbtn.btn {\n background-color: #f29400;\n}\n\n#simEditButtons > .typcn-chart-line-outline {\n fill: #BACC1E;\n}\n\n.simKey:hover {\n cursor: pointer;\n}\n\n.fixed-table-toolbar .btn:not(.start) {\n width: 48px;\n height: 48px;\n margin-right: 4px;\n margin-left: 0;\n background-color: #BACC1E;\n color: #fff;\n font-size: 24px;\n border: none;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n cursor: pointer;\n}\n\n.fixed-table-toolbar button.btn:last-child {\n margin-right: 0;\n}\n\n.fixed-table-toolbar .btn:hover:not(.start) {\n background-color: #C7D92B;\n}\n\n.btn-group.pull-right > .btn:last-child {\n margin-right: 0;\n}\n\ntable .typcn-flow-merge:before,\ntable .typcn-chevron-left:before,\ntable .typcn-chevron-right:before {\n display: inline-block;\n transform: rotate(-90deg);\n}\n\ntable:not(#robotTable) [data-bs-toggle=\"collapse\"]:after {\n content: url(\"data:image/svg+xml;utf8,\");\n float: right;\n}\n\n.fixed-table-container thead th .both {\n background-image: url(\"../css/svg/arrow-unsorted.svg\");\n}\n\n.fixed-table-container thead th .asc {\n background-image: url(\"../css/svg/arrow-sorted-up.svg\");\n}\n\n.fixed-table-container thead th .desc {\n background-image: url(\"../css/svg/arrow-sorted-down.svg\");\n}\n\ntable:not(#robotTable) [data-bs-toggle=\"collapse\"].collapsed:after {\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.modal-body > .bootstrap-table {\n margin: 0;\n}\n\n.blbtn {\n width: 48px;\n height: 48px;\n margin-right: 2px;\n margin-left: 0;\n margin-bottom: 6px;\n background-color: #fff;\n color: #333;\n font-size: 0;\n border: 1px solid #D8D8D8;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n cursor: pointer;\n}\n\n.blbtn:hover {\n background-color: #BACC1E;\n}\n\n.modal-footer .btn + .btn {\n margin-left: 0;\n margin-right: 0;\n}\n\n.btn-close {\n --bs-btn-close-focus-shadow: 0;\n}\n\n.close:hover,\n.close:focus {\n color: #333;\n opacity: 1;\n}\n\n#popup-robot-main {\n visibility: hidden;\n}\n\n#popup-robot-main.slick-initialized {\n visibility: visible;\n}\n\n.robot-container {\n border-radius: 4px;\n border: 1px solid #ddd;\n width: 140px;\n height: 88px;\n display: inline-grid;\n margin: 20px;\n padding: 13px 0;\n text-align: center;\n cursor: pointer;\n}\n\n.startupImages {\n top: 50%;\n position: relative;\n margin-top: 0;\n}\n\n.robot-label {\n display: block;\n line-height: 14px;\n}\n\n.robot-icon {\n position: relative;\n font-size: 40px;\n right: -16px;\n}\n\n.typcn.robot-icon:before {\n margin: 0;\n}\n\n.bootstrap-tagsinput {\n border: 10px solid #eee;\n padding: 4px 6px;\n color: #555;\n white-space: nowrap;\n overflow-x: auto;\n width: 100%;\n word-break: break-word;\n -webkit-hyphens: auto;\n -moz-hyphens: auto;\n hyphens: auto;\n}\n\n.bootstrap-tagsinput .tag {\n background-color: #bbb;\n margin-right: 2px;\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n\n}\n\n/***** END Overwrite Bootstrap-CSS *****/\n\n/***** BEGIN typicons *****/\n\n.dropdown-menu .typcn:before {\n margin-right: 6px;\n}\n\n#toolboxDiv > .nav-tabs .typcn:before {\n position: relative;\n top: 1px;\n}\n\n.blbtn.typcn:before {\n margin-right: 0;\n font-size: 36px;\n}\n\n.bootstrap-table .typcn:before {\n margin-right: 0;\n}\n\n.bootstrap-table .no-records-found td {\n color: #333333;\n}\n\n.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {\n background-color: #E9ECEF;\n}\n\n.input-typcn:before {\n font-size: 22px;\n position: relative;\n top: 4px;\n left: -1px;\n}\n\n/***** END typicons *****/\n\nlabel.form-invalid {\n position: relative;\n width: 100%;\n padding: 6px 6px;\n background: rgb(221, 221, 221);\n background: rgba(221, 221, 221, 0.9);\n color: #E2001A;\n border-radius: 2px;\n font-size: 16px;\n font-weight: normal;\n z-index: 10;\n}\n\nlabel.form-invalid:after {\n right: 10%;\n content: \" \";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none;\n border: 6px solid transparent;\n border-top-color: #E2001A;\n margin-top: 28px;\n z-index: 20;\n}\n\n#div-login-forms .form-group {\n position: relative;\n}\n\n.form-group {\n width: 100%;\n}\n\n.form-group .hint {\n position: relative;\n border-radius: 2px;\n margin-top: 12px;\n color: #333;\n background: rgb(221, 221, 221);\n background: rgba(221, 221, 221, 0.9);\n font-size: 16px;\n padding: 6px;\n z-index: 11;\n width: 100%;\n}\n\n.hint:before {\n position: absolute;\n content: '';\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 6px 6px 6px;\n border-color: transparent transparent #8FA402 transparent;\n right: 75%;\n top: -6px;\n}\n\n/***** BEGIN Input-Fields *****/\n\n.capitalLetters {\n text-transform: uppercase;\n}\n\n.input-group-addon {\n border: 1px solid #afca04;\n background: #fff;\n padding: 6px 6px 0 10px;\n border-radius: 2px;\n}\n\n/* enable absolute positioning */\n\n.inner-addon {\n position: relative;\n}\n\n/* style icon */\n\n.inner-addon .typcn {\n position: absolute;\n padding: 0 6px;\n left: 0;\n color: #c7c7c7;\n font-size: 20px;\n}\n\n#programShareWith {\n margin-right: 15px;\n}\n\ninput.shareLabelInput.form-control, select.shareLabelInput.form-control {\n margin: 0;\n}\n\nlegend {\n margin-bottom: 0;\n}\n\n.progName:before {\n margin-right: 0;\n}\n\n/***** END JQuery-Popup-Input-Fields *****/\n\n.bootstrap-table, .table {\n --bs-table-color: #333333;\n}\n\n.bootstrap-table:not(#start .bootstrap-table), .table:not(#robotTable) {\n cursor: pointer;\n}\n\n.bootstrap-table a {\n color: #333;\n margin-right: 4px;\n margin-left: 4px;\n text-decoration: none;\n}\n\n/*.bootstrap-table .extend:a {\n margin-right: 0;\n margin-left: 0;\n}*/\n\n.bootstrap-table a.disabled {\n color: #bbb;\n pointer-events: none;\n}\n\n/*.filters select {\n appearance: auto;\n}*/\n\n.bootstrap-table .fixed-table-toolbar .float-left, .bootstrap-table .fixed-table-toolbar .float-right {\n margin-top: 0;\n}\n\n.bs-bars.float-left {\n width: 100%;\n}\n\ntd.bs-checkbox {\n padding: 14px 8px 0 8px !important;\n}\n\n.bootstrap-table a:hover,\n.bootstrap-table a:focus {\n color: #000;\n text-decoration: none;\n}\n\n.bootstrap-table a > span {\n padding: 0;\n}\n\n.galleryTable {\n position: absolute;\n}\n\n.galleryTable tbody {\n display: flex;\n flex-wrap: wrap;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.galleryTable tr > td {\n background-color: transparent;\n}\n\n.galleryTable .typcn:before {\n position: absolute;\n left: 50%;\n margin-left: -40px;\n color: #eee;\n font-size: 80px;\n top: 10px;\n}\n\na.bookmark.typcn:before {\n color: #39378b;\n font-size: 34px;\n opacity: .8;\n padding: 16px;\n position: relative;\n left: 40px;\n top: 16px;\n z-index: 30;\n}\n\na.bookmark {\n width: 66px;\n height: 66px;\n display: block;\n right: 0;\n top: 0;\n margin: 0;\n position: absolute;\n border-radius: 50%;\n}\n\na.bookmark.typcn:hover:before {\n font-size: 30px;\n padding: 18px;\n opacity: 1;\n top: 18px;\n}\n\n#start .nav-link {\n background: none;\n border-bottom: 0.1875rem solid rgba(57, 55, 139, 0);\n color: rgba(0, 0, 0, .5);\n margin-right: 1.25rem;\n padding: 0 0 0.625rem;\n}\n\n#start .nav-link.active {\n border-bottom: 0.1875rem solid rgba(57, 55, 139, 1);\n color: #39378b;\n font-weight: 700;\n}\n\n#start .nav-link:hover {\n color: #39378b;\n}\n\n#start .dropdown-menu {\n border-radius: 5px;\n}\n\n#start .dropdown-toggle.show::after {\n transform: rotate(180deg);\n}\n\nbutton.btnFilter.start {\n display: inline-block;\n font-weight: 700;\n padding: 0.9375rem;\n text-decoration: none;\n color: #39378b;\n background-color: #ffffff;\n margin-left: 6px !important;\n border: none;\n border-radius: 5px !important;\n}\n\nbutton.btnFilter.start:hover, button.filter.start.show {\n background: #39378b;\n color: #fff;\n}\n\n#start .fixed-table-toolbar {\n min-height: 74px;\n}\n\n#start .galleryTable button.pick.start {\n display: inline-block;\n padding: 10px 50px 10px 15px;\n text-decoration: none;\n background-color: #39378b;\n color: #ffffff;\n float: right;\n margin: 12px -9px -9px 0;\n position: relative;\n border-radius: 5px 0;\n}\n\nbutton#more.start {\n display: inline-block;\n padding: 10px 50px 10px 15px;\n text-decoration: none;\n background-color: #39378b;\n color: #ffffff;\n margin: 0 0 20px;\n position: relative;\n border-radius: 5px;\n width: auto;\n padding: 10px;\n}\n\n\n#start div.start.typcn {\n position: relative;\n}\n\n#start .galleryTable button.pick.start:before {\n position: absolute;\n font-size: 24px;\n transform: translate(0px, 0px);\n transition-duration: 0.3s;\n margin: 0;\n right: 0;\n}\n\n#start .galleryTable button.pick.start:hover:before {\n transform: translate(5px, 0);\n transition-duration: 0.3s;\n}\n\n#start .galleryTable div.start.typcn:hover {\n background-color: red;\n}\n\n#start .fixed-table-container.fixed-height, #start .fixed-table-body {\n border: none;\n height: auto !important;\n margin: 0 -1.5em;\n}\n\n#start .galleryTable.table {\n position: relative;\n}\n\n#start .galleryTable td {\n color: #333;\n background-color: #ffffff;\n border-radius: 5px;\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: 0;\n --bs-table-bg-state: 0;\n}\n\na.page-link {\n --bs-pagination-active-bg: #BACC1E;\n --bs-pagination-active-border-color: #BACC1E;\n}\n\na.page-link:focus, a.page-link:hover {\n box-shadow: none;\n}\n\n.galleryIcon.typcn:before {\n position: relative;\n color: #fff;\n font-size: 24px;\n font-weight: 700;\n top: 4px;\n left: 40px;\n}\n\n.fixed-table-container.fixed-height.has-card-view {\n overflow: auto;\n}\n\nspan.card-view-title {\n min-width: auto !important;\n}\n\n.tutorialIcon.typcn:before {\n position: relative;\n color: #fff;\n font-size: 24px;\n top: 0;\n left: 0;\n margin-left: 0;\n margin-right: 12px;\n width: 1.5em;\n display: inline-block;\n}\n\ndiv.imgSol img, div.imgSol svg {\n max-width: 100%;\n overflow: hidden;\n}\n\n/*#galleryList .fixed-table-toolbar {\n display: flex;\n align-items: center;\n}*/\n\n#galleryList .fixed-table-toolbar .pull-left {\n flex: 1;\n}\n\n#galleryList .pull-right.search {\n display: none;\n}\n\n.listToolbar {\n display: flex;\n /* align-items: center;*/\n justify-content: space-between;\n position: absolute;\n top: 10px;\n}\n\n/*#galleryListToolbar .filters, #tutorialListToolbar .filters {\n display: flex;\n align-items: center;\n margin-top: 5px;\n}\n\n#galleryListToolbar .filters .form-control, #tutorialListToolbar .filters .form-control {\n margin: 0 4px; !*TODO a*!\n top: 5px;\n}\n\n#galleryListToolbar .filters .form-group {\n display: flex;\n}\n\n#galleryListToolbar .filters .form-group label {\n text-align: right;\n top: 5px;\n justify-content: right;\n display: flex;\n align-items: center;\n width: 100%;\n}*/\n\n/*#galleryTable .galleryNode {\n padding: 24px;\n float: left;\n}\n\n#galleryTable .listNode td {\n display: grid;\n grid-template-columns: 150px 1fr 300px;\n grid-template-rows: 0.4fr 0.6fr 0.5fr 0.5fr;\n gap: 16px;\n grid-template-areas: \"logo description likes\" \"logo description views\" \"name author tags\" \"name date like_btn\";\n padding: 16px;\n justify-content: center;\n align-items: center;\n max-height: 200px;\n}\n\n#galleryTable .listNode td .card-view:nth-child(1) {\n grid-area: logo;\n position: relative;\n align-self: flex-start;\n}\n\n#galleryTable .listNode td .card-view:nth-child(2) {\n grid-area: name;\n align-self: flex-end;\n}\n\n#galleryTable .listNode td .card-view:nth-child(3) {\n grid-area: description;\n}\n\n#galleryTable .listNode td .card-view:nth-child(4) {\n grid-area: author;\n}\n\n#galleryTable .listNode td .card-view:nth-child(5) {\n grid-area: date;\n}\n\n#galleryTable .listNode td .card-view:nth-child(6) {\n grid-area: likes;\n}\n\n#galleryTable .listNode td .card-view:nth-child(7) {\n grid-area: views;\n}\n\n#galleryTable .listNode td .card-view:nth-child(8) {\n grid-area: tags;\n}\n\n#galleryTable .listNode td .card-view:nth-child(9) {\n grid-area: like_btn;\n}\n\n#galleryTable .listNode td .card-view:nth-child(9) .galleryLike {\n bottom: 0;\n}*/\n\n.filter, .form-control:not(#start .fixed-table-toolbar>.float-right>.form-control) {\n border: 1px solid #afca04;\n background-color: #ffffff;\n border-radius: 2px;\n height: 48px;\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.form-control:not(#start .fixed-table-toolbar>.float-right>.form-control) {\n appearance: auto;\n}\n\n#start .fixed-table-toolbar > .float-right > .form-control {\n height: 54px;\n border-color: #39378b;\n margin-left: 6px;\n}\n\n.search > label {\n white-space: nowrap;\n margin-top: 12px;\n margin-left: 6px;\n max-width: 100%;\n}\n\n.search.float-right {\n max-width: calc(100% - 100px);\n}\n\n.cardViewName {\n font-weight: bold;\n font-size: 24px;\n text-align: center;\n margin-top: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n max-height: 34px;\n min-height: 34px;\n margin-bottom: 12px;\n -webkit-hyphens: auto;\n -moz-hyphens: auto;\n hyphens: auto;\n word-break: break-all;\n}\n\n.robotName {\n font-weight: bold;\n font-size: 20px;\n text-align: center;\n min-height: 52px;\n max-height: 52px;\n}\n\n.robotImage {\n position: relative;\n width: 100%;\n height: 0;\n padding-bottom: 60%;\n cursor: pointer;\n}\n\n.robotImage img {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n#start button.accordion-button {\n padding: 6px 12px;\n}\n\n#start label.form-check-label {\n margin-left: 12px;\n margin-top: 4px;\n}\n\n/*************************************\n***** New Start Page 2024 ***** \n*************************************/\n\n.transition, .button-big, .button, .button-big--arrow, .button-big.icon::after, .button-big--quaternary::after, .button-big--tertiary::after, .button-big--secondary::after, .button-big--primary::after {\n transition: all 0.3s;\n}\n\n/*************************************\n***** Typography *****\n*************************************/\n\n/*************************************\n***** Headlines *****\n*************************************/\n\nh1, h2, h3, h4, h5 {\n font-weight: 700;\n}\n\nh1 {\n font-size: 30px;\n line-height: 40px;\n margin-bottom: 30px;\n}\n\nh2 {\n font-size: 30px;\n line-height: 40px;\n margin-bottom: 20px;\n}\n\nh3 {\n font-size: 30px;\n line-height: 40px;\n margin-bottom: 30px;\n}\n\nh4 {\n font-size: 20px;\n line-height: 30px;\n}\n\nh5 {\n font-size: 20px;\n line-height: 30px;\n}\n\n.tint {\n display: inline-block;\n padding: 10px 20px;\n margin: 0 -10px 0 -10px;\n mix-blend-mode: multiply;\n color: #fff;\n}\n\n.tint--primary {\n background: #39378B;\n transform: rotate(1deg);\n position: relative;\n top: 5px;\n}\n\n.tint--secondary {\n background: #FDC300;\n transform: rotate(-1deg);\n}\n\n.tint--tertiary {\n background: #33B8CA;\n transform: rotate(-2deg);\n}\n\n.tint--quaternary {\n background: #88BCE2;\n transform: rotate(1deg);\n position: relative;\n top: -8px;\n}\n\n/*************************************\n***** Paragraph & Lists *****\n*************************************/\n\np {\n font-size: 16px;\n line-height: 24px;\n margin-bottom: 15px;\n}\n\np:last-child {\n margin-bottom: 0;\n}\n\np.teaser {\n font-size: 20px;\n line-height: 30px;\n}\n\np.teaser:last-child {\n margin-bottom: 15px;\n}\n\np.teaser + .button {\n margin-top: 20px;\n}\n\n/*************************************\n***** Links *****\n*************************************/\n\na {\n color: #39378B;\n text-decoration: underline;\n}\n\n@media (hover: hover) {\n a:hover {\n cursor: pointer;\n text-decoration: none;\n }\n}\n\n/*************************************\n***** Buttons *****\n*************************************/\n\n.button-big--arrow, .button-big.icon::after, .button-big--quaternary::after, .button-big--tertiary::after, .button-big--secondary::after, .button-big--primary::after {\n content: \"\";\n height: 30px;\n width: 30px;\n background-repeat: no-repeat;\n background-size: contain;\n position: absolute;\n bottom: 15px;\n right: 20px;\n}\n\n@media (hover: hover) {\n .button-big--arrow:hover, .button-big.icon:hover::after, .button-big--quaternary:hover::after, .button-big--tertiary:hover::after, .button-big--secondary:hover::after, .button-big--primary:hover::after {\n right: 15px;\n }\n}\n\n.button {\n display: inline-block;\n border-radius: 5px;\n text-decoration: none;\n font-weight: 700;\n padding: 15px;\n}\n\n.button--light {\n color: #39378B;\n background: #fff;\n}\n\n.button.show {\n background: #39378b;\n color: #fff;\n}\n\n@media (hover: hover) {\n .button:hover {\n background: #39378b;\n color: #fff;\n }\n}\n\n.button-big {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 10px 80px 10px 15px;\n color: #000;\n text-decoration: none;\n border-radius: 5px;\n}\n\n@media (min-width: 768px) {\n .button-big {\n padding: 15px 15px 50px 15px;\n }\n}\n\n@media (min-width: 992px) {\n .button-big {\n padding: 15px 80px 15px 20px;\n }\n}\n\n.button-big--primary {\n background: rgba(57, 55, 139, 0.1);\n border: 1px solid rgba(57, 55, 139, 0.5);\n position: relative;\n}\n\n.button-big--primary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--primary:hover {\n background: rgba(57, 55, 139, 0.2);\n border: 1px solid #39378b;\n }\n}\n\n.button-big--primary.icon {\n background: #39378b;\n}\n\n.button-big--secondary {\n background: rgba(253, 195, 0, 0.1);\n border: 1px solid rgba(253, 195, 0, 0.5);\n position: relative;\n}\n\n.button-big--secondary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--secondary:hover {\n background: rgba(253, 195, 0, 0.2);\n border: 1px solid #fdc300;\n }\n}\n\n.button-big--secondary.icon {\n background: #fdc300;\n}\n\n.button-big--tertiary {\n background: rgba(51, 184, 202, 0.1);\n border: 1px solid rgba(51, 184, 202, 0.5);\n position: relative;\n}\n\n.button-big--tertiary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--tertiary:hover {\n background: rgba(51, 184, 202, 0.2);\n border: 1px solid #33b8ca;\n }\n}\n\n.button-big--tertiary.icon {\n background: #33b8ca;\n}\n\n.button-big--quaternary {\n background: rgba(136, 188, 226, 0.1);\n border: 1px solid rgba(136, 188, 226, 0.5);\n position: relative;\n}\n\n.button-big--quaternary::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big--quaternary:hover {\n background: rgba(136, 188, 226, 0.2);\n border: 1px solid #88bce2;\n }\n}\n\n.button-big--quaternary.icon {\n background: #88bce2;\n}\n\n.button-big.icon {\n border: none;\n color: #fff;\n padding: 15px 80px 10px 15px;\n}\n\n@media (min-width: 992px) {\n .button-big.icon {\n padding: 40px 80px 40px 40px;\n }\n}\n\n.button-big.icon::after {\n background-image: url('data:image/svg+xml;charset=UTF-8,');\n}\n\n@media (hover: hover) {\n .button-big.icon:hover {\n box-shadow: 0 20px 50px rgba(0, 0, 0, 0.05);\n }\n}\n\n.button-big.icon svg {\n fill: #fff;\n height: 25px;\n width: auto;\n margin-bottom: 20px;\n align-self: flex-start;\n}\n\n/*************************************\n***** Sections *****\n*************************************/\n\nsection {\n width: 100%;\n}\n\n.section--white {\n background: #fff;\n}\n\n.section--light {\n background: #e9ecef;\n}\n\n#start {\n background: #fff;\n}\n\n/*************************************\n***** Banner *****\n*************************************/\n\n#startup-message-statustext {\n background: #39378B;\n color: #fff;\n position: absolute;\n z-index: 999;\n bottom: 50px;\n right: 50px;\n width: 100%;\n max-width: 450px;\n border-radius: 5px;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.25);\n}\n\n#startup-message-statustext h4, #startup-message-statustext p {\n padding: 20px;\n}\n\n/*************************************\n***** NEPO Block in Colors *****\n*************************************/\n\n.nepo {\n display: inline-block;\n}\n\n.nepo::before {\n content: \"\";\n display: inline-block;\n width: 85px;\n height: 20px;\n background-image: url(\"img/nepo.svg\");\n background-position: left bottom;\n background-repeat: no-repeat;\n background-size: contain;\n margin-right: 5px;\n}\n\n/*************************************\n***** News *****\n*************************************/\n\n.teaser-news {\n display: flex;\n background: #e9ecef;\n padding: 15px;\n border-radius: 5px;\n}\n\n@media (min-width: 992px) {\n .teaser-news {\n padding: 40px;\n }\n}\n\n.teaser-news--header {\n font-weight: 700;\n font-size: 20px;\n line-height: 30px;\n margin-bottom: 10px;\n}\n\n.teaser-news--body h3 {\n color: #39378B;\n}\n\n.teaser-news--image {\n width: 100%;\n height: auto;\n}\n\n/*************************************\n***** Footer *****\n*************************************/\n\n#start footer {\n border-top: 1px solid rgba(0, 0, 0, 0.2);\n padding-bottom: 96px;\n width: 100%;\n}\n\n#start footer img {\n width: 100%;\n}\n\n#start footer p,\n#start footer .nav-link {\n font-size: 14px;\n line-height: 20px;\n margin-right: 0;\n}\n\n#start footer .nav-item {\n background: none;\n}\n\n#start footer .nav-item:hover {\n background: none;\n}\n\n#start footer .nav-link {\n padding: 5px 0;\n color: #6c757d;\n}\n\n/*************************************\n***** Safari Flexbox Fix for 100% Height *****\n*************************************/\n@supports (background: -webkit-named-image(i)) {\n .flexbox-fix {\n display: flex;\n }\n}\n\n.galleryTable.table, .galleryTable tr {\n border: 0.75em solid #E9ECEF;\n border-collapse: collapse;\n}\n\n#share-with-gallery .galleryTable tr, #share-with-gallery .galleryTable.table {\n border-color: #fff;\n}\n\ndiv.galleryLike {\n color: #fff;\n text-align: center;\n bottom: -20px;\n}\n\ndiv.galleryLike a > span {\n color: #fff;\n}\n\nbutton.galleryLike.btn {\n color: white;\n border: 2px solid white;\n border-radius: 2px;\n opacity: 0.75;\n}\n\nbutton.galleryLike.btn:hover, button.galleryLike.btn:focus, button.galleryLike.btn:active, button.galleryLike.btn:focus:active {\n background-color: inherit;\n font-weight: 600;\n opacity: 1;\n}\n\ndiv.cardViewDescription {\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: 12px;\n position: relative;\n min-height: 42px;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\ndiv.cardViewInfo {\n overflow: hidden;\n text-overflow: ellipsis;\n position: relative;\n word-break: break-word;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n}\n\ndiv.cardViewLabel {\n display: inline-block;\n min-width: 30%;\n}\n\n.galleryDescription:before, .tutorialOverview:before {\n content: '...';\n position: absolute;\n right: 0;\n bottom: 0;\n}\n\n.galleryDescription:after, .tutorialOverview:after {\n content: '';\n position: absolute;\n right: 0;\n width: 1em;\n height: 2.5em;\n margin-top: -0.3em;\n}\n\n.galleryDescription.color0:after, .tutorialOverview.color0:after {\n background: #33B8CA;\n}\n\n.galleryDescription.color1:after, .tutorialOverview.color1:after {\n background: #EBC300;\n}\n\n.galleryDescription.color2:after, .tutorialOverview.color2:after {\n background: #005A94;\n}\n\n.galleryDescription.color3:after, .tutorialOverview.color3:after {\n background: #179C7D;\n}\n\n.galleryDescription.color4:after, .tutorialOverview.color4:after {\n background: #F29400;\n}\n\n.galleryDescription.color5:after, .tutorialOverview.color5:after {\n background: #E2001A;\n}\n\n.galleryDescription.color6:after, .tutorialOverview.color6:after {\n background: #EB6A0A;\n}\n\n.galleryDescription.color7:after, .tutorialOverview.color7:after {\n background: #8FA402;\n}\n\n.galleryDescription.color8:after, .tutorialOverview.color8:after {\n background: #BACC1E;\n}\n\n.galleryDescription.color9:after, .tutorialOverview.color9:after {\n background: #9085BA;\n}\n\n.galleryDescription.color10:after, .tutorialOverview.color10:after {\n background: #FF69B4;\n}\n\n.galleryDescription.color11:after, .tutorialOverview.color11:after {\n background: #DF01D7;\n}\n\n.galleryAuthor {\n overflow: hidden;\n word-break: break-all;\n height: 22px;\n}\n\n.galleryLike.typcn:before {\n position: inherit;\n font-size: 16px;\n color: #fff;\n}\n\n.galleryTags {\n background-color: inherit;\n border: none;\n box-shadow: none;\n text-decoration: none;\n overflow: hidden;\n white-space: normal;\n padding: 0;\n height: 34px;\n line-height: 34px;\n}\n\n.galleryTags input {\n height: 0;\n}\n\n.galleryTags > .tag {\n background-color: #bbb;\n line-height: 34px;\n white-space: normal;\n}\n\n.galleryTable td {\n border: none !important;\n color: #FFFFFF;\n width: 100vw;\n position: relative;\n}\n\n#galleryPreview tr {\n width: 100%;\n}\n\n.dataTables_wrapper {\n margin: 0 68px;\n}\n\n#progList table tbody tr.selected,\n#confList table tbody tr.selected,\n#relationsList table tbody tr.selected,\n#userGroupList table tbody tr.selected,\n#userGroupMemberList table tbody tr.selected {\n background-color: #BACC1E;\n}\n\n#progList .fixed-table-container tbody .selected td,\n#userGroupList .fixed-table-container tbody .selected td,\n#userGroupMemberList .fixed-table-container tbody .selected td {\n background-color: #BACC1E;\n}\n\n#progList table tbody tr:hover td:not(td:last-child),\n#confList table tbody tr:hover td:not(td:last-child),\n#relationsList table tbody tr:hover,\n#userGroupList table tr:hover td:not(td:last-child) {\n background-color: #BACC1E;\n}\n\na.delete:hover {\n color: #E2001A;;\n}\n\na.share:hover, a.gallery:hover, a.load:hover {\n color: #BACC1E;\n}\n\n.float-right.search.btn-group {\n max-width: calc(100% - 150px);\n}\n\n/*@media only screen and (max-width: 767px) {\n !* Manually set bootstrap < sm rules *!\n !*#progListToolbar .bars.pull-left {\n margin-bottom: 68px;\n }*!\n #progListScopeSelect {\n position: absolute;\n right: 0;\n bottom: calc(-100% - 10px);\n width: calc(100vw - 32px);\n margin: 0;\n }\n}*/\n\ninput[type=range] {\n -webkit-appearance: none;\n margin: 10px 0;\n width: 100%;\n}\n\ninput[type=range]:focus {\n outline: none;\n}\n\ninput[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 8px;\n cursor: pointer;\n animate: 0.2s;\n box-shadow: 0 0 0 #000000;\n background: #BACC1E;\n border-radius: 2px;\n border: 0 solid #000000;\n}\n\ninput[type=range]::-webkit-slider-thumb {\n box-shadow: 0 0 0 #000000;\n border: 1px solid #333333;\n height: 24px;\n width: 12px;\n border-radius: 2px;\n background: #FFFFFF;\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -8.5px;\n}\n\ninput[type=range]:focus::-webkit-slider-runnable-track {\n background: #BACC1E;\n}\n\ninput[type=range]::-moz-range-track {\n width: 100%;\n height: 8px;\n cursor: pointer;\n animate: 0.2s;\n box-shadow: 0 0 0 #000000;\n background: #BACC1E;\n border-radius: 2px;\n border: 0 solid #000000;\n}\n\ninput[type=range]::-moz-range-thumb {\n box-shadow: 0 0 0 #000000;\n border: 1px solid #333333;\n height: 24px;\n width: 12px;\n border-radius: 2px;\n background: #FFFFFF;\n cursor: pointer;\n}\n\ninput[type=range]::-ms-track {\n width: 100%;\n height: 8px;\n cursor: pointer;\n animate: 0.2s;\n background: transparent;\n border-color: transparent;\n color: transparent;\n}\n\ninput[type=range]::-ms-fill-lower {\n background: #BACC1E;\n border: 0 solid #000000;\n border-radius: 4px;\n box-shadow: 0 0 0 #000000;\n}\n\ninput[type=range]::-ms-fill-upper {\n background: #BACC1E;\n border: 0 solid #000000;\n border-radius: 4px;\n box-shadow: 0 0 0 #000000;\n}\n\ninput[type=range]::-ms-thumb {\n box-shadow: 0 0 0 #000000;\n border: 1px solid #333333;\n height: 24px;\n width: 12px;\n border-radius: 2px;\n background: #FFFFFF;\n cursor: pointer;\n}\n\ninput[type=range]:focus::-ms-fill-lower {\n background: #BACC1E;\n}\n\ninput[type=range]:focus::-ms-fill-upper {\n background: #BACC1E;\n}\n\n.table-dark {\n text-transform: uppercase;\n --bs-table-bg: #898989;\n --bs-table-border-color: none;\n /* color: #ffffff;\n text-align: left;\n padding-left: 10px;*/\n}\n\n#progList table,\n#confList table,\n#showMultipleSimPrograms table thead,\n#show-relations table {\n margin: 0;\n width: 100%;\n}\n\n.updatedRow {\n color: #BACC1E;\n}\n\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td {\n padding: 9px;\n}\n\n.dataTables_scrollBody {\n border-bottom: none !important;\n}\n\n#progList .programs,\n#confList .configurations,\n#relationsList .relations {\n border-bottom: 1px solid #eee;\n}\n\n#relationsListing {\n margin-bottom: 15px;\n}\n\n#progList > h2,\n#confList > h2,\n#logList > h2 {\n margin-left: 68px;\n}\n\n\n#create-user-group .modal-body {\n margin-bottom: 1em;\n}\n\n#userGroupList .btn-group > .btn:not(.dropdown-toggle),\n#userGroupMemberList .btn-group > .btn:not(.dropdown-toggle) {\n border-radius: 2px;\n}\n\n#userGroupMemberTable .member-name:not(.active),\n#userGroupMemberTable .edit-member-name:not(.active) {\n display: none;\n}\n\n#userGroupMemberTable .btn {\n display: inline-block;\n font-size: 16px;\n height: calc(1.25em + 12px);\n vertical-align: top;\n border: none;\n margin-right: 0;\n}\n\n#userGroupMemberTable.table-hover > tbody > tr:hover {\n background-color: transparent;\n}\n\n#userGroupMemberTable .btn:focus,\n#userGroupMemberTable .btn:active {\n outline: none;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n\n#userGroupMemberTable .member-name-column {\n position: relative;\n display: inline-block;\n padding: 8px;\n margin: -8px;\n}\n\n#userGroupMemberTable tr.selected .member-name-column.active {\n background-color: rgba(255, 255, 255, .5);\n}\n\n#userGroupMemberTable .member-name {\n display: inline-block;\n padding: 7px 0;\n line-height: 1.25;\n font-size: 16px;\n margin-left: 16px;\n}\n\n#userGroupMemberTable .edit-member-name,\n#userGroupMemberTable .edit-member-name form {\n display: inline-block;\n}\n\n#userGroupMemberTable .edit-member-name form {\n margin: 0;\n padding: 0;\n}\n\n#userGroupMemberTable .edit-member-name form label.form-invalid {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n margin-bottom: 0;\n transform: translateY(100%);\n}\n\n#userGroupMemberTable .edit-member-name form label.form-invalid:after {\n top: 0;\n right: 25%;\n margin-top: 0;\n transform: translateY(-100%);\n border-bottom-color: red;\n border-top-color: transparent;\n}\n\n#userGroupMemberTable .edit-member-name input.form-control {\n font-size: 16px;\n line-height: 1.25;\n padding: 4px 12px 4px 15px;\n margin: 0;\n}\n\n#userGroupMemberTable .edit-member-name .btn.iais-loading-spin:before {\n display: inline-block;\n animation: iais-loading-spin 1.2s linear infinite;\n}\n\n#simEditButtons > .btn-group {\n width: 48px;\n height: 48px;\n vertical-align: top;\n}\n\n#simEditButtons > .btn-group.open button {\n background-color: #e7e7e7;\n}\n\n#simEditButtons > .btn-group > .dropdown-menu {\n width: 48px;\n min-width: 48px;\n margin-top: 6px;\n}\n\n#simEditButtons > .btn-group > .dropdown-menu > li > a {\n padding-left: 5px;\n padding-right: 0;\n text-align: center;\n height: 35px;\n font-size: 28px;\n text-decoration: none;\n}\n\n.simChangeObject.disabled {\n color: #bbb;\n cursor: not-allowed;\n}\n\n#simStop, #simControl.typcn-media-stop {\n color: #E2001A !important;\n}\n\n#simStop.disabled {\n color: #F6B3B9 !important;\n cursor: not-allowed;\n}\n\n.disabled a, li.disabled {\n color: #bbb; /* TODO check where this is used: color: #F6B3B9 !important;*/\n cursor: not-allowed;\n pointer-events: none\n}\n\n.disabled:hover, .disabled *:hover {\n background: inherit;\n}\n\n#simButtons > .debug {\n color: #1C5A94;\n}\n\n.typcn-media-play-outline.rotated:before {\n display: inline-block;\n transform: rotate(-90deg);\n}\n\n@keyframes iais-loading-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.pull-none .pull-right {\n margin-left: 3px;\n}\n\n.pull-none .pull-left {\n margin-right: 3px;\n}\n\n@media only screen and (max-width: 992px) {\n #main-section {\n top: 60px;\n }\n\n #logoShowStart img {\n height: 44px;\n margin-top: 8px;\n width: auto;\n }\n\n #head-navigation-tabs > li > a.active {\n border-bottom: none;\n }\n\n #head-navigation {\n padding-bottom: 8px;\n }\n\n #roberta {\n width: 80px;\n height: 90px;\n bottom: -6px;\n right: -10px;\n }\n\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 36px;\n }\n\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: inherit;\n }\n\n .modal-dialog.bigModal {\n width: 80%;\n min-width: 300px;\n }\n\n #head-navigation-tabs li {\n float: none;\n width: auto;\n overflow: hidden;\n }\n\n .log {\n margin: 16px 16px;\n }\n\n .dataTables_wrapper {\n margin: 0 16px;\n }\n\n #progList > h2,\n #confList > h2,\n #relationsList > h2,\n #logList > h2 {\n margin-left: 16px;\n }\n\n .navbar-fixed-bottom {\n border: 0;\n padding: 16px 16px;\n margin-bottom: 0;\n }\n\n .simWindow {\n left: 6px;\n top: 60px;\n }\n}\n\n@media only screen and (max-width: 992px) {\n .border-dotted {\n border-right: 0;\n }\n}\n\n/*.modal-header h4 {\n font-size: 1em;\n}*/\n\nimg.img-responsive {\n height: 140px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 768px) {\n #show-startup-message .slick-prev {\n left: -25px;\n }\n\n #show-startup-message .slick-next {\n right: -25px;\n }\n\n #show-startup-message #popup-robot-container {\n margin-left: 25px;\n margin-right: 25px;\n }\n}\n\n@media only screen and (max-width: 480px) {\n #show-startup-message .slick-slide.slick-center {\n transform: scale(1);\n }\n\n .robot-container {\n margin: 20px 8px;\n }\n}\n\n.enjoyhint_close_btn {\n border: 2px solid #BACC1E;\n}\n\n.enjoyhint_close_btn:active, .enjoyhint_close_btn:hover {\n background: #C7D92B;\n}\n\n@media print {\n div#show-startup-message {\n display: none !important;\n }\n\n svg.blocklySvg {\n overflow: visible;\n }\n\n .navbar {\n display: block;\n }\n\n .nav {\n display: block;\n }\n\n .headNavigationTabs {\n margin-top: 59px;\n z-index: 1\n }\n\n .navbar-collapse {\n padding-right: 10px;\n padding-left: 10px;\n }\n\n .collapse {\n display: block;\n visibility: visible;\n }\n\n #blocklyDiv {\n border: none;\n }\n\n div#simButtonsCollapse {\n display: none;\n }\n\n .blocklyToolboxDiv {\n display: none !important;\n }\n\n .blocklyMainBackground {\n stroke: none !important;\n }\n\n #rightMenuDiv {\n display: none;\n }\n\n g.blocklyButtons {\n display: none;\n }\n\n .blocklyMainBackground {\n stroke: none;\n }\n\n a#tabConfiguration {\n display: none;\n }\n\n .nav-tabs > li {\n width: 100%;\n }\n\n #headNavigationTabs {\n border: none;\n }\n\n #head-navigation-tabs > li > a.active {\n border-bottom: 2px solid #000;\n }\n\n g.blocklyBlockCanvas {\n transform: translate(-200px, -50px);\n }\n\n div#releaseInfo {\n display: none;\n }\n}\n\n/***** Overwrite prettify-CSS *****/\n\nli.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 {\n list-style-type: inherit !important;\n}\n\n#tutorialRoberta {\n width: 200px;\n height: 200px;\n position: absolute;\n bottom: -15%;\n right: -5%;\n background-image: url(../css/svg/Roberta_zwinkernd.svg);\n background-repeat: no-repeat;\n background-size: 200px;\n}\n\n.tutorialLevelStars {\n position: relative;\n}\n\n.tutorialLevel.typcn::before {\n position: relative;\n left: 0;\n font-size: 24px;\n top: 0;\n color: #FFFFFF;\n display: table-cell;\n}\n\n#tutorialOverview .modal-dialog {\n border: 2px solid #33B8CA;\n font-size: 16px;\n}\n\n#tutorial-navigation, #tutorialEnd {\n display: none;\n}\n\n#head-navigation, #tutorial-navigation {\n /* box-shadow: 0 3px 5px #aeaeaf;\n -webkit-box-shadow: 0 3px 5px #aeaeaf;\n border: 0;\n margin: 0;\n}\n\n#head-navigation {\n /* display: none; /* not needed in the tutorial form*/\n}\n\n#tutorial-navigation ul {\n margin: 16px;\n}\n\nul#tutorial-close {\n float: right;\n}\n\n#tutorialEnd a:before {\n line-height: 42px;\n font-size: 1.5em;\n}\n\n#tutorial-header, .step, #tutorial-close {\n color: #333;\n}\n\n#tutorial-navigation li {\n text-align: center;\n}\n\n#tutorial-navigation li:last-child a:before {\n position: absolute;\n top: 3px;\n right: 3px;\n}\n\n#tutorial-navigation li.step {\n text-align: center;\n float: left;\n background: #EAF0BB;\n list-style: none;\n padding: 0;\n height: 48px;\n}\n\n#tutorial-navigation li.step.active {\n background: #BACC1E;\n}\n\n#tutorial-navigation li a {\n width: 48px;\n height: 48px;\n padding: 6px 8px 6px 16px;\n font-size: 24px;\n display: inline-block;\n font-weight: bold;\n box-sizing: border-box;\n float: left;\n margin: 0 0 0 -15px;\n color: inherit;\n text-decoration: none;\n}\n\n#tutorial-navigation li:first-child a {\n width: 48px;\n margin-left: 0;\n}\n\n#tutorial-navigation li.step:after {\n background-image: url(../css/svg/step_connector.svg);\n content: \" \";\n width: 17px;\n height: 48px;\n display: inline-block;\n}\n\n#tutorial-navigation li.step.last:after {\n background-image: url(../css/svg/step_connector_last.svg);\n}\n\n#tutorial-navigation li.step.active:after {\n background-image: url(../css/svg/step_connector_active.svg);\n}\n\n#tutorial-navigation li.step.preActive:after {\n background-image: url(../css/svg/step_connector_before_active.svg);\n}\n\n#tutorial-navigation li.step.last.active:after {\n background-image: url(../css/svg/step_connector_active_last.svg);\n}\n\n#tutorial-navigation .navbar-nav > .active > a, #tutorial-navigation .navbar-nav > li > a:hover {\n color: #333;\n background-color: transparent;\n}\n\n#tutorialNavs {\n left: 60px;\n position: relative;\n}\n\n#tutorial-navigation a.typcn.typcn-delete {\n color: #333;\n font-size: 36px;\n position: absolute;\n border: white solid 6px;\n background: white;\n top: 24px;\n text-decoration: none;\n}\n\n#tutorial-header { /**/\n overflow: hidden;\n height: 92px;\n margin: 0;\n line-height: 76px;\n vertical-align: middle;\n}\n\n#tutorialOverview > .modal-backdrop.fade.in {\n opacity: 0.6;\n}\n\n#tutorialDiv.fromRight {\n background-color: #eee;\n}\n\n#tutorialContent {\n background-color: #fff;\n height: 100%;\n margin: 10px;\n padding: 16px;\n font-size: 16px;\n overflow-y: auto;\n}\n\n#tutorialContent .tip {\n list-style-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMzAiIHdpZHRoPSIzMiIgdmlld0JveD0iMCAwIDMyIDMwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzFhMWExODt9LmNscy0ye2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkZsb3JpYW48L3RpdGxlPjxnIHRyYW5zZm9ybT0ic2NhbGUoMC4xKSIgaWQ9IkViZW5lXzIiIGRhdGEtbmFtZT0iRWJlbmUgMiI+PGcgaWQ9IkViZW5lXzEtMiIgZGF0YS1uYW1lPSJFYmVuZSAxIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMDQuNDUsMTgyLjYxYTIxLjE5LDIxLjE5LDAsMSwxLDYuMjEtMTUsMjEuMTgsMjEuMTgsMCwwLDEtNi4yMSwxNW0yLjcxLTMyLjY4YTI1LDI1LDAsMSwwLDUuNDMsOC4xMiwyNS4wOSwyNS4wOSwwLDAsMC01LjQzLTguMTIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zMTYsMTYuN2ExLjc1LDEuNzUsMCwwLDEtLjk0LjIzSDI5MS40M1YxMy4zNUgzMTVBMS43OSwxLjc5LDAsMCwxLDMxNiwxNi43bS0zMi4yMS0xMGE5LjEsOS4xLDAsMCwwLTEuOC0uMzFjLS42NywwLTEuMDYsMC0xLjU2LDBIMjU4LjUzYTcuOTMsNy45MywwLDAsMSw0LTIuMzUsMTEuMDcsMTEuMDcsMCwwLDEsMi44Ni0uMmgxNC4wOGMuMjksMCwuNDcsMCwuNywwYTcuNzYsNy43NiwwLDAsMSwxLjMyLjIsOCw4LDAsMCwxLDQuNCwyLjg0LDguMTMsOC4xMywwLDAsMSwuODYsMS4zNyw4LjYxLDguNjEsMCwwLDAtMy0xLjU0bTIuMTEsMTYuNzJhNy45NCw3Ljk0LDAsMCwxLTQuNDMsMi44LDExLjE5LDExLjE5LDAsMCwxLTIuODYuMkgyNjQuNTFsLS43LDBhNy4yNiw3LjI2LDAsMCwxLTEuMzItLjIsNy45Miw3LjkyLDAsMCwxLTQtMi4zM2gyMi4zOWExMS41MSwxMS41MSwwLDAsMCwxLjY5LS4wOSw4LjY0LDguNjQsMCwwLDAsMS43OC0uNDRBOC41NCw4LjU0LDAsMCwwLDI4Ni43NywyMmE3LjMxLDcuMzEsMCwwLDEtLjg5LDEuNG0tMjkuNDctNVYxMS43OGE4LDgsMCwwLDEsLjE2LTEuNTZoMjMuODNhNy40Nyw3LjQ3LDAsMCwxLDIuMzIuMTgsNC45Miw0LjkyLDAsMCwxLC4zNSw5LjM2LDQuODYsNC44NiwwLDAsMS0xLC4yNSw3LjM3LDcuMzcsMCwwLDEtMS4xNywwSDI1Ni41N2E4LDgsMCwwLDEtLjE2LTEuNjZtLTMuNzEsMS42NkgyMDUuMjJsLTQuOS05Ljg0SDI1Mi43YTExLjk0LDExLjk0LDAsMCwwLS4xMiwxLjU2VjE4LjRhMTEuNiwxMS42LDAsMCwwLC4xMSwxLjY2TTE2NC43OCw0NS44M2EzNy4xMSwzNy4xMSwwLDAsMC0xOC40NC0xMC45NGMtLjgxLS4yLTEuNjQtLjM3LTIuNDctLjUxTDE5NS4zMiw4Ljc3LDIwNCwyNi4yOFptMzAuNTcsMTMyLjk1YTI5LjUsMjkuNSwwLDAsMS0uMzEsMy41MSwyMS4zNCwyMS4zNCwwLDAsMS01Ljg0LDEyLjI3QTIwLjg1LDIwLjg1LDAsMCwxLDE3Ni43NSwyMDBhMzQuMTgsMzQuMTgsMCwwLDEtMy41Ni4yM2gtNTQuNnYtNi4wNmMuMjQtLjI2LjQ2LS41My43LS44aDQ1YzEuMSwwLDIuMzEsMCwzLjQ5LS4wOGEyOSwyOSwwLDAsMCwzLjU3LS40MywyMy4wOSwyMy4wOSwwLDAsMCw2LjkyLTIuNDFBMTguNjksMTguNjksMCwwLDAsMTg0LDE4NS42YTIxLjA2LDIxLjA2LDAsMCwwLDMuNDMtNi41MiwyNi44NCwyNi44NCwwLDAsMCwxLjI5LTcuMTNWMzguMmw2LjYyLTMuMjlWMTc3LjE5YzAsLjA3LDAsLjE5LDAsLjIxdi4wOWwwLC40MmMwLC4yOSwwLC41NywwLC44N20tNzcuODYsMTAuNzVoLS4zN1YxOTBhMzYuNzgsMzYuNzgsMCwwLDEtMi41LDIuNzksMzYuNSwzNi41LDAsMSwxLDIuODctMy4yNk02NC4xNSwyNjMuMlYxOTcuODJhMzkuMzIsMzkuMzIsMCwwLDAsNTAuNjEsMFYyNjMuMkg2NC4xNVptNjUsMy44M2EzMC43MSwzMC43MSwwLDAsMSwzMC4zNSwyNS43MWMuMTMuNzkuMjMsMS41OC4zLDIuMzhsLjA1Ljc1SDE5LjA4bDAtLjM3LjA1LS42YTMwLjc3LDMwLjc3LDAsMCwxLDI4LjQ0LTI3LjhDNDguNCwyNjcsNDkuMTgsMjY3LDUwLDI2N2g3OS4xM1pNNTAuMDksMTY2LjQ2QTYwLjQxLDYwLjQxLDAsMCwxLDI1LjE5LDYxLjYxLDM2LjUyLDM2LjUyLDAsMCwwLDI0LDcwLjg2YTM3LDM3LDAsMCwwLDI4LjE3LDM2LDM3LjQxLDM3LjQxLDAsMCwwLDYuMDcsMWMxLC4wOCwyLjA2LjEsMy4wNi4xaDc1Ljg4YzEsMCwyLDAsMy4wNi0uMWEzNy40MiwzNy40MiwwLDAsMCw2LjA3LTEsMzUuMzgsMzUuMzgsMCwwLDAsNC41My0xLjQzdjYwLjMxSDEyOC44MWEzOS4zOSwzOS4zOSwwLDAsMC03OC43My43NW0xMzQuNzksNS4zMUEyMC4xOCwyMC4xOCwwLDAsMSwxODEsMTgzLjIzYTE0LjgzLDE0LjgzLDAsMCwxLTQuNTMsMy44NSwxOC45MiwxOC45MiwwLDAsMS01Ljc2LDIsMjYsMjYsMCwwLDEtMy4xMi4zOWMtMS4wNS4wNy0yLjA5LjA3LTMuMjQuMDZoLTQyLjFhMzkuMTYsMzkuMTYsMCwwLDAsNi41OS0yMGgyNS44OFYxMDMuNjZhMzcsMzcsMCwwLDAsMTIuNTgtNTQuOGwxNy42LTguNzZWMTcxLjc3Wm0tMTUwLTEyMS40QTMzLjE2LDMzLjE2LDAsMCwxLDU4LjU1LDM3Ljc0Yy45Mi0uMDcsMS44My0uMDksMi43Ny0uMWg3NS44OWMuOTUsMCwxLjg1LDAsMi43Ny4xYTMzLjIyLDMzLjIyLDAsMCwxLDUuNDQsNjUuMzhBMzQsMzQsMCwwLDEsMTQwLDEwNGMtLjkyLjA3LTEuODIuMDktMi43Ny4wOUg2MS4zM2MtMSwwLTEuODUsMC0yLjc3LS4wOWEzMy45NCwzMy45NCwwLDAsMS01LjQ0LS44NywzMy4yMywzMy4yMywwLDAsMS0xOC4yLTUyLjc0TTMxNy44NiwxMC4yNEE1LjY1LDUuNjUsMCwwLDAsMzE1LDkuNTJIMjkxLjJBMTEuNzYsMTEuNzYsMCwwLDAsMjgyLjQyLjMzYTExLjg5LDExLjg5LDAsMCwwLTItLjNjLS4zMiwwLS42OSwwLTEsMEgyNjUuNDNjLS41NSwwLTEuMDYsMC0xLjc3LDBhMTIuMiwxMi4yLDAsMCwwLTIsLjI4LDExLjc0LDExLjc0LDAsMCwwLTYuNTYsNC4xNCwxMS4yNCwxMS4yNCwwLDAsMC0xLjI1LDEuOTRIMTk4LjQxTDE5NywzLjY0LDEzNi40OSwzMy43N2wwLDBINjEuMzNjLTEsMC0yLDAtMy4wNi4xQTM3LDM3LDAsMCwwLDMxLjkxLDQ4YTM2LjIyLDM2LjIyLDAsMCwwLTQuNDMsNy4yM2wtLjExLS4xNUE2NC4yNiw2NC4yNiwwLDAsMCw1MC4xNywxNzAuNGEzOS4xNCwzOS4xNCwwLDAsMCwxMC4xNiwyMy43NXY2OUg1MGMtLjg4LDAtMS43OSwwLTIuNjguMDlhMzQuNTQsMzQuNTQsMCwwLDAtMzIsMzEuMjZsLS4wNi42Ny0uMDUuOTFjMCwuODQsMCwxLjY4LS4wNSwyLjUzdi45NGMwLC4wOC4wNS4wNi4xLjA2aDEuNDJsMi40NiwwSDE2My42N2MuMDcsMCwuMDksMCwuMDgtLjA4di0uNDhsMC0yLjUyYzAtLjIxLDAtLjQyLDAtLjYzbDAtLjQ5YzAtLjIyLDAtLjQ1LDAtLjY3LS4wNy0uOS0uMTktMS43OS0uMzQtMi42OGEzMy44NCwzMy44NCwwLDAsMC0xLjI5LTUuMjQsMzQuNjEsMzQuNjEsMCwwLDAtMzIuODMtMjMuNjdIMTE4LjU5VjIwNGg1NC42NWEzOS40NSwzOS40NSwwLDAsMCw0LS4yNSwyOC43MSwyOC43MSwwLDAsMCw3LjgtMiwyMS44MSwyMS44MSwwLDAsMCw2Ljg2LTQuNSwyMi40NiwyMi40NiwwLDAsMCw0LjctNi43MSwyOC40NywyOC40NywwLDAsMCwyLjI3LTcuNzMsMzIuMjYsMzIuMjYsMCwwLDAsLjM0LTRjMC0uMzQsMC0uNjgsMC0xbDAtLjUydi0uMTRjMC0uMDYsMCwwLDAsMFYzM2wxMC01LTIuMDUtNC4xMkgyNTMuOWExMC43LDEwLjcsMCwwLDAsMS4xOCwxLjg1LDExLjc4LDExLjc4LDAsMCwwLDYuNTIsNC4yMSwxMS41LDExLjUsMCwwLDAsMiwuMjljLjMxLDAsLjY4LDAsMSwwaDE0LjA4Yy41NiwwLDEuMDYsMCwxLjc3LDBhMTEuNTQsMTEuNTQsMCwwLDAsMi0uMjgsMTEuNzYsMTEuNzYsMCwwLDAsOC44OS05LjIxSDMxNWE1LjYyLDUuNjIsMCwwLDAsMi44Mi0xMC41MiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTY3Ljk0LDk2LjI2QTI0Ljc2LDI0Ljc2LDAsMSwxLDkyLjcsNzEuNDksMjQuNzYsMjQuNzYsMCwwLDEsNjcuOTQsOTYuMjYiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MS40Miw3MS41QTI2LjUxLDI2LjUxLDAsMCwxLDY3Ljk0LDQ1aDBBMjYuNTEsMjYuNTEsMCwwLDEsOTQuNDUsNzEuNWgwQTI2LjUxLDI2LjUxLDAsMCwxLDY3Ljk0LDk4aDB2LTMuNWEyMywyMywwLDAsMCwyMy0yM2gwYTIzLDIzLDAsMCwwLTIzLTIzaDBhMjMsMjMsMCwwLDAtMjMsMjNoMGEyMywyMywwLDAsMCwyMywyM2gwVjk4QTI2LjUxLDI2LjUxLDAsMCwxLDQxLjQyLDcxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNjEsNjQuNTlhOS43Niw5Ljc2LDAsMSwxLTIuODYsNi45QTkuNzgsOS43OCwwLDAsMSw2MSw2NC41OU02Ny45NCw4NWExMy41LDEzLjUsMCwxLDAtOS41NS00LDEzLjQ4LDEzLjQ4LDAsMCwwLDkuNTUsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY3Ljk0LDc3LjY4QTYuMjksNi4yOSwwLDAsMCw2OS42LDY1LjMydjdINjYuMjh2LTdhNi4yOSw2LjI5LDAsMCwwLDEuNjYsMTIuMzYiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMzAuNyw5Ni4yNmEyNC43NiwyNC43NiwwLDEsMSwyNC43Ni0yNC43NkEyNC43NiwyNC43NiwwLDAsMSwxMzAuNyw5Ni4yNiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwNC4xOSw3MS40OUEyNi41MSwyNi41MSwwLDAsMSwxMzAuNyw0NWgwYTI2LjUxLDI2LjUxLDAsMCwxLDI2LjUxLDI2LjUxaDBBMjYuNTEsMjYuNTEsMCwwLDEsMTMwLjcsOThoMHYtMy41YTIzLDIzLDAsMCwwLDIzLTIzaDBhMjMsMjMsMCwwLDAtMjMtMjNoMGEyMywyMywwLDAsMC0yMywyM2gwYTIzLDIzLDAsMCwwLDIzLDIzaDBWOThhMjYuNTIsMjYuNTIsMCwwLDEtMjYuNTItMjYuNTJaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIzLjgsNjQuNTlhOS43Nyw5Ljc3LDAsMSwxLTIuODYsNi45LDkuNzgsOS43OCwwLDAsMSwyLjg2LTYuOU0xMzAuNyw4NWExMy41LDEzLjUsMCwxLDAtOS41NS00LDEzLjQ3LDEzLjQ3LDAsMCwwLDkuNTUsNCIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEzMC43LDc3LjY4YTYuMjksNi4yOSwwLDAsMCwxLjY2LTEyLjM2djdIMTI5di03YTYuMjksNi4yOSwwLDAsMCwxLjY2LDEyLjM2Ii8+PC9nPjwvZz48L3N2Zz4K)\n}\n\n#tutorialContent ul {\n list-style-image: none;\n}\n\n#tutorialContent a {\n color: #F29400;\n font-weight: bold;\n text-decoration: none;\n}\n\ndiv#helpDiv {\n margin-top: 24px;\n}\n\n.quiz.continue {\n margin-top: 24px;\n border-top: 1px solid #eee;\n padding-top: 10px;\n text-align: right;\n}\n\np.quiz {\n margin-top: 16px;\n}\n\n.quiz.footer {\n margin-top: 16px;\n}\n\n.quiz.footer > .btn.right {\n margin-left: 16px;\n}\n\n.quiz.answer {\n display: block;\n position: relative;\n padding-left: 34px;\n margin-top: 16px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n/* Hide the browser's default checkbox */\n\n.quiz.answer input {\n position: absolute;\n opacity: 0;\n cursor: pointer;\n}\n\n/* Create a custom checkbox */\n\n.checkmark {\n position: absolute;\n top: 2px;\n left: 2px;\n height: 25px;\n width: 25px;\n background-color: #eee;\n border-radius: 2px;\n}\n\n/* On mouse-over, add a grey background color */\n\n.quiz.answer:hover input ~ .checkmark {\n background-color: #ccc;\n}\n\n/* When the checkbox is checked, add a blue background */\n\n.quiz.answer input:checked ~ .checkmark {\n background-color: #ccc;\n}\n\n/* Create the checkmark/indicator (hidden when not checked) */\n\n.quiz.answer > .checkmark:after {\n content: \"\";\n position: absolute;\n display: none;\n}\n\n/* Show the checkmark when checked */\n\n.quiz.answer input:checked ~ .checkmark:after {\n display: block;\n}\n\n/* Style the checkmark/indicator */\n\n.quiz.answer > .checkmark:after {\n left: 10px;\n top: 5px;\n width: 6px;\n height: 14px;\n border: solid white;\n border-width: 0 3px 3px 0;\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\nlabel.quiz.answer {\n padding: 6px 10px 6px 36px;\n border-radius: 4px;\n}\n\nlabel.quiz.answer.correct {\n border: solid 2px #C7D92B;\n background-color: #C7D92B;\n padding: 4px 8px 4px 34px;\n}\n\nlabel.quiz.answer.fail {\n border: solid 2px #E2001A;\n padding: 4px 8px 4px 34px;\n}\n\n#welcomeHaribo {\n z-index: 9999;\n}\n\n#welcomeHaribo .modal-dialog {\n width: 40vw;\n}\n\n/*CSS FOR MULTIPLE SIMULATION POPUP*/\n\n#simModal .fixed-table-header {\n background-color: rgb(137, 137, 137);\n color: white;\n}\n\n#simModal .fixed-table-header table {\n color: white;\n}\n\n.lds-ellipsis {\n display: inline-block;\n position: relative;\n width: 64px;\n height: 100px;\n}\n\n.lds-ellipsis div {\n position: absolute;\n top: 27px;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background: #333;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.lds-ellipsis div:nth-child(1) {\n left: 6px;\n animation: lds-ellipsis1 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(2) {\n left: 6px;\n animation: lds-ellipsis2 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(3) {\n left: 26px;\n animation: lds-ellipsis2 0.6s infinite;\n}\n\n.lds-ellipsis div:nth-child(4) {\n left: 45px;\n animation: lds-ellipsis3 0.6s infinite;\n}\n\n@keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n}\n\n@keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(19px, 0);\n }\n}\n\n/*CSS FOR MULTIPLE SIMULATION POPUP*/\n\n#simModal .fixed-table-header {\n background-color: #B3BFB8;\n}\n\n/* distance between steps in mbed/sensebox download modal: */\n\ntd[lkey=\"Blockly.Msg.POPUP_DOWNLOAD_STEP_A_SENSEBOX\"] {\n padding-bottom: 2.5em;\n}\n\n#flaskEditor {\n height: 100%; /*fix for FF calc thing*/\n}\n\n#sourceCodeEditor pre {\n position: absolute;\n top: 0;\n padding: 0;\n line-height: 18px;\n background-color: transparent;\n border: 0 solid #ccc;\n border-radius: 0;\n color: #000;\n font-family: 'Roboto', sans-serif;\n}\n\n#sourceCodeEditor .codeflask {\n height: calc(100% - 80px);\n height: -moz-calc(100% - 80px);\n height: -webkit-calc(100% - 80px);\n position: relative;\n}\n\n#sourceCodeEditor textarea {\n position: absolute;\n top: 0;\n line-height: 18px;\n font-size: 13px;\n padding: 0;\n z-index: 5;\n color: transparent;\n}\n\n#codeDiv pre {\n position: absolute;\n background-color: transparent;\n border: 0 solid #ccc;\n border-radius: 0;\n color: #000;\n font-family: 'Roboto', sans-serif;\n background-image: linear-gradient(transparent 50%, rgba(247, 247, 247, 1) 0%);\n background-size: 100% 2.77em;\n background-repeat: repeat;\n width: 100%;\n margin-top: 0;\n line-height: 18px;\n padding: 0;\n}\n\n#sourceCodeEditor .codeflask__flatten {\n padding-top: 0 !important;\n line-height: 18px;\n}\n\n#codeDiv textarea {\n position: absolute;\n z-index: 8;\n color: rgba(255, 255, 255, 0) !important;\n height: calc(100% - 82px);\n margin-top: 0;\n line-height: 18px;\n padding: 0;\n}\n\n#codeDiv .codeflask__flatten {\n background-color: #FFF0;\n padding-top: 0 !important;\n line-height: 18px;\n}\n\n#codeDiv .codeflask__lines {\n background-color: #EEE;\n z-index: 5 !important;\n}\n\n.codeflask__lines {\n background-color: #EEE;\n padding-top: 0 !important;\n z-index: 5 !important;\n}\n\n.codeflask__lines__line {\n color: #333;\n line-height: 18px !important;\n}\n\n.codeflask--has-line-numbers::before {\n z-index: 4 !important;\n}\n\npre code {\n white-space: inherit;\n}\n\n#confirm, #confirmCancel {\n text-transform: capitalize;\n}\n\n.blinking {\n animation: blinkingBackground 1.2s infinite;\n}\n\n.blinking > span {\n animation: blinkingForeground 1.2s infinite;\n}\n\n@keyframes blinkingBackground {\n 0% {\n background-color: #E2001A;\n border-bottom: 4px solid #E2001A;\n }\n 49% {\n background-color: #E2001A;\n border-bottom: 4px solid #E2001A;\n }\n 60% {\n background-color: transparent;\n border-bottom: 4px solid transparent;\n }\n 99% {\n background-color: transparent;\n border-bottom: 4px solid transparent;\n }\n 100% {\n background-color: #E2001A;\n border-bottom: 4px solid #E2001A;\n }\n}\n\n@keyframes blinkingForeground {\n 0% {\n color: #fff;\n }\n 49% {\n color: #fff;\n }\n 60% {\n color: #333;\n }\n 99% {\n color: #333;\n }\n 100% {\n color: #fff;\n }\n}\n\n#blocklyDiv.debug path.blocklyPath {\n fill-opacity: 0.3;\n}\n\n#blocklyDiv.debug path.blocklyPath.selectedBreakpoint {\n stroke-opacity: 1;\n transition: none;\n stroke: purple;\n stroke-width: 2px;\n}\n\n#blocklyDiv.debug path.blocklyPath.breakpoint {\n stroke-opacity: 1;\n transition: none;\n stroke: red;\n stroke-width: 2px;\n}\n\n.badge-primary {\n background-color: #F29400;\n}\n\n#releaseInfo {\n position: fixed;\n left: 70%;\n right: 8px;\n bottom: 60px;\n z-index: 2999;\n padding: 16px;\n background-color: #FBDE00;\n border: 1px solid #d8d8d8;\n}\n\n#releaseInfo > span {\n display: inline-block !important;\n vertical-align: middle;\n padding-right: 16px;\n}\n\n#releaseInfo > .no-button {\n position: absolute;\n top: 0;\n right: 0;\n}\n\n@media (max-width: 60em), (max-width: 800px) {\n #releaseInfo {\n left: 40%;\n }\n}\n\n.port {\n cursor: default !important;\n}\n\n#valuesContent .panel-heading {\n background-color: #dddddd;\n}\n\n#valuesContent .panel-group {\n margin: 20px 0 0 0;\n}\n\n.panel-title > a:before {\n position: relative;\n background-size: 10px;\n display: inline-block;\n width: 10px;\n height: 10px;\n content: \"\";\n margin: 0 4px 0 4px;\n background-image: url('data:image/svg+xml,minus ');\n}\n\n.panel-title > a.collapsed:before {\n background-size: 10px;\n display: inline-block;\n width: 10px;\n height: 10px;\n content: \"\";\n margin: 0 4px 0 4px;\n background-image: url('data:image/svg+xml, plus');\n}\n\n.panel-title > a {\n text-decoration: none;\n display: inline-block;\n width: 100%;\n height: 100%;\n color: inherit;\n line-height: 1.5;\n}\n\n#accordion .panel-body {\n overflow: auto;\n max-height: 50vh;\n border: none;\n}\n\n/****************************/\n\ninput,\ntextarea {\n border: 1px solid #E9ECEF;\n box-sizing: border-box;\n margin: 0;\n outline: none;\n padding: 10px;\n}\n\ninput[type=\"button\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\n\n.btn input[type=radio] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n\n.input-group {\n clear: both;\n position: relative;\n}\n\n.input-group input[type='button'] {\n background-color: #dddddd;\n transition: all 300ms ease;\n}\n\n.input-group .button-minus,\n.input-group .button-plus {\n font-weight: bold;\n height: 32px;\n width: 32px;\n padding: 0;\n}\n\n.input-group .quantity-field {\n position: relative;\n height: 32px;\n width: 32px;\n text-align: center;\n display: inline-block;\n font-size: 14px;\n resize: vertical;\n}\n\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n#nn, #nn-learn {\n width: 100%;\n height: 100%;\n}\n\n#nn .nn-middle-size {\n font-size: 20px;\n}\n\n#nn .nn-bold, #nn-learn .nn-bold {\n font-weight: bold;\n}\n\n#nn .nn-large-size {\n font-size: 28px;\n}\n\n#nn-epoch-num {\n width: 80px;\n}\n\n#nn-top-controls {\n width: 100%;\n border-bottom: 1px solid #ddd;\n padding: 16px 0;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n background: white;\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-justify-content: space-around;\n}\n\n#nn-learn-top-controls {\n width: 100%;\n border-bottom: 1px solid #ddd;\n padding: 16px 0;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n background: white;\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n}\n\n#nn-top-controls .nn-control, #nn-learn-top-controls .nn-control {\n flex-grow: 0;\n margin-left: 10px;\n margin-top: 6px;\n}\n\n#nn-show-math-all.nn-control {\n flex: 0 0 15%;\n margin-right: 10px;\n}\n\n#nn-show-next-neuron-all.nn-control, #nn-show-iteration-all.nn-control, #nn-learn-show-iteration-all.nn-control {\n margin: 0 10px;\n display: flex;\n flex-direction: column;\n justify-content: space-evenly;\n align-items: stretch;\n}\n\n#nn-learn-show-activation {\n width: 100px;\n padding: 8px;\n}\n\n#nn-top-controls .nn-control .label {\n color: #777;\n font-size: 13px;\n display: block;\n margin-bottom: 6px;\n font-weight: 300;\n}\n\n#nn-top-controls .nn-control .value {\n font-size: 24px;\n margin: 0;\n font-weight: 300;\n}\n\n#nn-top-controls .nn-control .select {\n position: relative;\n}\n\n.nn-input-div {\n position: relative;\n height: 36px;\n}\n\n/*.nn-explore-btns, .nn-learn-btns {\n position: absolute;\n left: 10px;\n bottom: 10px;\n z-index: 9999;\n display: flex;\n}*/\n\n/*.nn-explore-btn {\n min-height: 48px;\n max-width: 48px;\n min-width: 48px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n border: 0;\n margin: 0;\n background: white;\n}\n\n.nn-explore-btn > span, .nn-learn-btn > span {\n font-size: 36px;\n}\n\n.nn-explore-btn:hover, .nn-learn-btn:hover {\n background-color: #BACC1E;\n}*/\n\n#goto-sim, #learn-goto-sim {\n position: absolute;\n min-height: 48px;\n max-width: 48px;\n min-width: 48px;\n right: 10px;\n bottom: 10px;\n font-size: 36px;\n background-color: #ffffff;\n color: #333333;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n padding: 2px 0 0 0;\n margin: 0;\n z-index: 9999;\n}\n\n#goto-sim:hover, #learn-goto-sim:hover {\n background-color: #BACC1E;\n}\n\n.nn-selection {\n min-height: 36px;\n border: none;\n border-radius: 2px;\n background-color: #23b6ac;\n color: #ffffff;\n padding: 6px;\n}\n\n#nn-show-math {\n background-color: #f0f0f0;\n min-height: 36px;\n padding: 6px;\n border-radius: 2px;\n}\n\n#nn-show-next-neuron, #nn-show-iteration, #nn-learn-show-iteration {\n color: rgba(0, 0, 0, 0.6);\n background-color: #fafafa;\n font-weight: 300;\n text-align: center;\n}\n\n#nn-main-part, #nn-learn-main-part {\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n margin-top: 30px;\n margin-bottom: 50px;\n padding-top: 2px;\n position: relative;\n}\n\n#nn-main-part .output .mdl-checkbox__label.label, #nn-learn-main-part .output .mdl-checkbox__label.label {\n line-height: 1.7em;\n}\n\n#nn-features, #nn-learn-features {\n width: 10%;\n position: relative;\n}\n\n#nn-features .nn-plus-minus-neurons {\n position: absolute;\n line-height: 28px;\n top: -58px;\n width: 120px;\n height: 44px;\n}\n\n.nn-modal-content {\n border: 1px solid;\n background-color: #ffffff;\n}\n\n.nn-popup-modal {\n position: fixed;\n display: none;\n bottom: 0;\n left: 50%;\n transform: translate(-50%);\n max-width: 90%;\n z-index: 1;\n}\n\n.nn-modal-dialog {\n width: auto;\n}\n\nbutton.nn-btn {\n background-color: #23b6ac;\n width: 36px;\n height: 36px;\n border-radius: 2px;\n padding: 0;\n font-size: 20px;\n margin-right: inherit;\n border: none;\n color: #ffffff;\n}\n\n.nn-btn.nn-top-control-button {\n width: 27px;\n height: 27px;\n}\n\n.nn-btn.nn-cancel {\n background-color: #CD5C5C;\n}\n\n.nn-btn.nn-cancel:hover {\n background-color: #E8C0C0;\n}\n\n#nn-features .nn-plus-minus-neuron-button.active-input {\n background-color: #BACC1E;\n box-shadow: inset 0 0 2px 2px black;\n}\n\n#nn-features .nn-plus-minus-neuron-button.active-hidden {\n background-color: #c7b7b7;\n box-shadow: inset 0 0 2px 2px black;\n}\n\n#nn-features .nn-plus-minus-neuron-button.active-output {\n background-color: #f29400;\n box-shadow: inset 0 0 2px 2px black;\n}\n\n#nn-training-data-upload, #nn-test-data-upload {\n display: none;\n}\n\n/*.nn-popup-modal > .modal-backdrop {\n background-color: transparent;\n}*/\n\n.nn-table-input {\n width: 100px;\n}\n\n.nn-user-input-table-header {\n display: inline-block;\n width: 100%;\n}\n\n.nn-input-background-color {\n background: #8fa40266;\n}\n\n.nn-output-background-color {\n background: #f2940066;\n}\n\nbutton.nn-btn:hover {\n background-color: #ade7e4;\n}\n\n.nn-selection option {\n background-color: #ffffff;\n color: #333333;\n}\n\n#nn-top-controls .nn-num-layers-group {\n font-weight: bold;\n}\n\n#nn-features .nn-plus-minus-neurons .nn-plus-minus-neuron-button {\n margin-right: 4px;\n}\n\n#nn-features .nn-plus-minus-neurons .nn-plus-minus-neuron-button {\n margin-right: 4px;\n}\n\n#nn-features svg .main-label, #nn-learn-features svg .main-label {\n font-size: 13px;\n fill: #333;\n font-weight: 300;\n}\n\n#nn-features .nn-showval, #nn-learn-features .nn-showval {\n display: block;\n font-size: 16px;\n font-weight: bold;\n text-anchor: start;\n cursor: pointer;\n}\n\n#nn-features svg #markerArrow, #nn-learn-features svg #markerArrow {\n fill: black;\n stroke: black;\n stroke-opacity: 0.2;\n}\n\n#nn-features .node_input rect, #nn-learn-features .node_input rect {\n cursor: default;\n fill: rgb(143, 164, 2);\n}\n\n#nn-features .node_hidden rect, #nn-learn-features .node_hidden rect {\n cursor: default;\n fill: lightgrey;\n}\n\n#nn-features .node_output rect, #nn-learn-features .node_output rect {\n cursor: default;\n fill: rgb(242, 148, 0);\n}\n\n#nn-features .core .link, #nn-learn-features .core .link {\n stroke-dasharray: 9 1;\n stroke-dashoffset: 1;\n /* webkit-animation: 0.5s linear 0s infinite flowing; */\n}\n\n/** Invisible thick links used for showing weight values on mouse click. */\n\n#nn-features .core .nn-weight-click {\n stroke-width: 14;\n stroke: black;\n fill: none;\n opacity: 0;\n cursor: pointer;\n}\n\n.nn-input {\n position: relative;\n border: 2px solid #23b6ac;\n height: 100%;\n top: -4px;\n width: 6em;\n}\n\n#nn-learn-features .core .nn-weight-click {\n stroke-width: 14;\n stroke: black;\n fill: none;\n opacity: 0;\n cursor: pointer;\n}\n\n#nn-features .core .nn-weight-show-click {\n stroke-width: 14;\n stroke: gray;\n fill: none;\n opacity: 0.3;\n cursor: pointer;\n}\n\n#nn-learn-features .core .nn-weight-show-click {\n stroke-width: 14;\n stroke: gray;\n fill: none;\n opacity: 0.3;\n cursor: pointer;\n}\n\n.nn-bias-click {\n cursor: pointer;\n}\n\n#nn-features .canvas canvas, #nn-learn-features .canvas canvas {\n position: absolute;\n top: -2px;\n left: -2px;\n border: 2px solid black;\n border-radius: 3px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);\n}\n\n#nn-network {\n position: absolute;\n top: 50px;\n left: 0;\n}\n\n#nn-editCard {\n display: none;\n position: absolute;\n padding: 5px;\n border: 1px solid #aaa;\n z-index: 10;\n background: #fff;\n cursor: default;\n border-radius: 5px;\n left: 240px;\n}\n\n#nn-learn-training-bias-linechart, #nn-learn-training-weight-linechart {\n display: none;\n position: absolute;\n width: 200px;\n height: 65px;\n border: 1px solid #aaa;\n z-index: 10;\n background: #fff;\n cursor: default;\n}\n\n#nn-nameCard {\n display: none;\n position: absolute;\n padding: 5px;\n border: 1px solid #aaa;\n z-index: 10;\n background: #fff;\n cursor: default;\n border-radius: 5px;\n left: 240px;\n}\n\n#nn-name-message {\n border: 12px 4px 4px 4px;\n background: #fff;\n color: #333;\n}\n\n#nn-table-user-input input {\n width: 100px;\n}\n\n.nn-type-button {\n position: relative;\n top: 5px;\n}\n\n.nn-btn.nn-finish-button {\n position: relative;\n left: -4px;\n}\n\n.nn-metrics {\n position: relative;\n font-weight: 300;\n height: 60px;\n margin-right: 10px;\n display: flex;\n flex-basis: 25%;\n flex-wrap: nowrap;\n align-content: center;\n justify-content: space-evenly;\n}\n\n#nn-learn-training-loss-linechart {\n flex: 0 0 40%;\n max-width: 200px;\n height: 100%;\n border: 1px solid #333333;\n}\n\n.nn-output-stats {\n padding: 10px;\n}\n\n#nn-random-values-from-to {\n position: relative;\n height: 36px;\n}\n\n#nn-random-values-from-to > input {\n width: 50px;\n}\n\n#nn-random-values-from-to > span {\n position: relative;\n top: -4px;\n}\n\n#nn-random-values-from-to > .nn-random-values-finished-button {\n position: relative;\n padding-left: 5px;\n top: 0;\n}\n\n.nn-output-stats .value {\n color: rgba(0, 0, 0, 0.6);\n font-weight: 300;\n text-align: center;\n}\n\n.nn-type {\n height: 40px;\n style: \"font-size: 14px\"\n}\n\ncanvas {\n display: block;\n}\n\n.link {\n fill: none;\n stroke: #aaa;\n stroke-width: 1;\n}\n\ng.column rect {\n stroke: none;\n}\n\n@-webkit-keyframes flowing {\n from {\n stroke-dashoffset: 0;\n }\n to {\n stroke-dashoffset: -10;\n }\n}\n\n#downloadType {\n padding: 8px 20px 20px;\n text-align: center;\n}\n\n.downloadType {\n font-size: 18px;\n text-align: center;\n text-decoration: none;\n padding: 12px;\n margin: 12px;\n border: 1px solid #BACC1E;\n border-radius: 2px;\n cursor: pointer;\n width: 100%;\n}\n\n#progressBar {\n background-color: #BACC1E;\n height: 10px;\n width: 0%;\n\n}\n\n.downloadType:hover {\n background-color: #BACC1E;\n}\n"]} \ No newline at end of file diff --git a/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/abstract.connections.js b/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/abstract.connections.js index 316a1bd14f..8ebd284d41 100644 --- a/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/abstract.connections.js +++ b/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/abstract.connections.js @@ -1,3 +1,3 @@ -var __extends=this&&this.__extends||function(){var e=function(o,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,o){e.__proto__=o}||function(e,o){for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])},e(o,t)};return function(o,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=o}e(o,t),o.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}}();define(["require","exports","program.model","guiState.controller","guiState.controller","program.controller","robot.controller","jquery","util.roberta","message","blockly","connection.controller"],(function(e,o,t,n,a,r,s,i,d,l,c,p){Object.defineProperty(o,"__esModule",{value:!0}),o.AbstractPromptConnection=o.AbstractConnection=void 0;var u=function(){function e(){}return e.prototype.terminate=function(){i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").removeClass("wait"),n.setRunEnabled(!1),i("#runSourceCodeEditor").addClass("disabled"),i("#menuConnect").parent().addClass("disabled"),n.setPing(!0)},e.prototype.runNative=function(e){var o=this;t.runNative(n.getProgramName(),e,n.getLanguage(),(function(e){n.setState(e),o.run(e)}))},e.prototype.runOnBrick=function(e,o,a){var s=this;t.runOnBrick(n.getProgramName(),e,o,a,r.getSSID(),r.getPassword(),n.getLanguage(),(function(e){n.setState(e),s.run(e),r.reloadProgram(e)}))},e.prototype.stopProgram=function(){throw new Error("stop button enabled but function is not implemented/overwritten")},e.prototype.showConnectionModal=function(){i("#buttonCancelFirmwareUpdate").css("display","inline"),i("#buttonCancelFirmwareUpdateAndRun").css("display","none"),s.showSetTokenModal(8,8)},e.prototype.reset2DefaultFirmware=function(){var e=this;n.hasRobotDefaultFirmware()?t.resetProgram((function(o){e.run(o)})):l.displayInformation({rc:"error"},"","should not happen!")},e.prototype.showRobotInfo=function(){0!==n.getRobotName().length?i("#robotName").html(n.getRobotName()):i("#robotName").html("-"),i("#robotSystem").html(n.getRobotRealName()),"wait"===n.getRobotState()||i("#head-navi-icon-robot").hasClass("wait")?(i("#robotStateWait").css("display","inline"),i("#robotStateDisconnected").css("display","none"),i("#robotStateBusy").css("display","none")):"busy"===n.getRobotState()?(i("#robotStateWait").css("display","none"),i("#robotStateDisconnected").css("display","none"),i("#robotStateBusy").css("display","inline")):(i("#robotStateWait").css("display","none"),i("#robotStateDisconnected").css("display","inline"),i("#robotStateBusy").css("display","none")),"EN"==n.getLanguage()?i("#robotBattery").text(n.getRobotBattery()+" V"):i("#robotBattery").text(n.getRobotBattery().toString().replace(".",",")+" V");var e=parseInt(n.getRobotTime(),10);e<1e3?i("#robotWait").text(e+" ms"):i("#robotWait").text(Math.round(e/1e3)+" s"),i("#show-robot-info").modal("show")},e.prototype.showWlanModal=function(){i("#menu-wlan").modal("show")},e.prototype.updateMenuStatus=function(e){switch(e){case 0:i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").removeClass("wait"),n.setRunEnabled(!1),i("#runSourceCodeEditor").addClass("disabled"),i("#menuConnect").parent().addClass("disabled"),p.setIsAgent(!0);break;case 1:p.setIsAgent(!0),i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").addClass("wait"),n.setRunEnabled(!0),i("#runSourceCodeEditor").removeClass("disabled"),i("#menuConnect").parent().addClass("disabled");break;default:p.setIsAgent(!0),i("#menuConnect").parent().removeClass("disabled"),""==n.getRobotPort()?(i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").removeClass("wait"),n.setRunEnabled(!1)):(i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").addClass("wait"),n.setRunEnabled(!0),i("#runSourceCodeEditor").removeClass("disabled"))}},e}();o.AbstractConnection=u;var b=function(e){function o(){var o=null!==e&&e.apply(this,arguments)||this;return o.skipDownloadPopup=!1,o}return __extends(o,e),o.prototype.init=function(){this.clearDownloadModal(),n.setPing(!1),i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").addClass("wait"),n.setRunEnabled(!0),i("#runSourceCodeEditor").removeClass("disabled"),i("#menuConnect").parent().addClass("disabled")},o.prototype.isRobotConnected=function(){return!0},o.prototype.createDownloadLink=function(e,o){var t;if("msSaveOrOpenBlob"in navigator?(i("#trA").addClass("hidden"),d.download(e,o),n.setConnectionState("error")):i("#trA").removeClass("hidden"),"Blob"in window){var a=new Blob([o],{type:"application/octet-stream"});"msSaveOrOpenBlob"in navigator?navigator.msSaveOrOpenBlob(a,e):((t=document.createElement("a")).download=e,t.innerHTML=e,t.href=window.URL.createObjectURL(a))}else(t=document.createElement("a")).setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(o)),t.setAttribute("download",e),t.style.display="none";if(t&&!("msSaveOrOpenBlob"in navigator)){var r=document.createElement("div");r.setAttribute("id","programLink");var s=document.createElement("br");r.setAttribute("style","text-align: center;"),r.appendChild(s),r.appendChild(t),t.setAttribute("style","font-size:36px"),i("#downloadLink").append(r)}},o.prototype.runFileDownload=function(e,o,t){var a=(e.programName||n.getProgramName())+"."+n.getBinaryFileExtension();if("bin"!==n.getBinaryFileExtension()&&"uf2"!==n.getBinaryFileExtension()||(e.compiledCode=d.base64decode(e.compiledCode)),t||null!==navigator.userAgent.toLowerCase().match(/iPad|iPhone|android/i))d.download(a,e.compiledCode),setTimeout((function(){n.setConnectionState("wait")}),5e3),l.displayInformation(e,e.message,e.message,n.getProgramName(),n.getRobot());else{this.createDownloadLink(a,e.compiledCode);for(var r=1;c.Msg["POPUP_DOWNLOAD_STEP_"+r];r++){var s=i('
  • '),p=c.Msg["POPUP_DOWNLOAD_STEP_"+r+"_"+n.getRobotGroup().toUpperCase()]||c.Msg["POPUP_DOWNLOAD_STEP_"+r]||"POPUP_DOWNLOAD_STEP_"+r;s.html(''+p+""),s.css("opacity","0"),i("#download-instructions").append(s)}i("#download-instructions li").each((function(e){i(this).html(i(this).html().replace("$",o))})),i("#download-instructions li").each((function(e){i(this).delay(750*e).animate({opacity:1},1e3)}))}},o.prototype.setTransferProgress=function(e){i("#progressBar").width("".concat(100*e,"%")),i("#transfer").text("".concat(Math.ceil(100*e),"%"))},o.prototype.showProgressBarModal=function(){var e=i("#popupDownloadHeader").text();i("#popupDownloadHeader").text(e.replace("$",i.trim(n.getRobotRealName()))),i("#downloadType").addClass("hidden"),i("#status").removeClass("hidden"),i("#programHint").addClass("hidden"),i("#changedDownloadFolder").addClass("hidden"),i("#OKButtonModalFooter").addClass("hidden"),i("#save-client-compiled-program").modal("show")},o.prototype.setResetModalListener=function(){var e=this;i("#save-client-compiled-program").oneWrap("hidden.bs.modal",(function(o){var t=i("#popupDownloadHeader").text();i("#popupDownloadHeader").text(t.replace(i.trim(n.getRobotRealName()),"$")),i("#label-checkbox").is(":checked")&&e.setSkipDownloadPopup(!0),e.clearDownloadModal(),(0,a.setConnectionState)("wait")}))},o.prototype.setSkipDownloadPopup=function(e){this.skipDownloadPopup=e},o.prototype.clearDownloadModal=function(){i("#programLink").remove(),i("#download-instructions").empty(),i("#programHint").removeClass("hidden"),i("#changedDownloadFolder").removeClass("hidden"),i("#OKButtonModalFooter").removeClass("hidden"),i("#downloadType").addClass("hidden"),i("#status").addClass("hidden"),i("#progressBar").width("0%"),i("#transfer").text("0%"),i("#webUsb").off("click"),i("#fileDownload").off("click")},o}(u);o.AbstractPromptConnection=b})); +var __extends=this&&this.__extends||function(){var e=function(o,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,o){e.__proto__=o}||function(e,o){for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e[t]=o[t])},e(o,t)};return function(o,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=o}e(o,t),o.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}}();define(["require","exports","program.model","guiState.controller","guiState.controller","program.controller","robot.controller","jquery","util.roberta","message","blockly","connection.controller"],(function(e,o,t,n,a,r,s,i,d,l,c,p){Object.defineProperty(o,"__esModule",{value:!0}),o.AbstractPromptConnection=o.AbstractConnection=void 0;var u=function(){function e(){}return e.prototype.terminate=function(){i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").removeClass("wait"),n.setRunEnabled(!1),i("#runSourceCodeEditor").addClass("disabled"),i("#menuConnect").parent().addClass("disabled"),n.setPing(!0)},e.prototype.runNative=function(e){var o=this;t.runNative(n.getProgramName(),e,n.getLanguage(),(function(e){n.setState(e),o.run(e)}))},e.prototype.runOnBrick=function(e,o,a){var s=this;t.runOnBrick(n.getProgramName(),e,o,a,r.getSSID(),r.getPassword(),n.getLanguage(),(function(e){n.setState(e),s.run(e),r.reloadProgram(e)}))},e.prototype.stopProgram=function(){throw new Error("stop button enabled but function is not implemented/overwritten")},e.prototype.showConnectionModal=function(){i("#buttonCancelFirmwareUpdate").css("display","inline"),i("#buttonCancelFirmwareUpdateAndRun").css("display","none"),s.showSetTokenModal(8,8)},e.prototype.reset2DefaultFirmware=function(){var e=this;n.hasRobotDefaultFirmware()?t.resetProgram((function(o){e.run(o)})):l.displayInformation({rc:"error"},"","should not happen!")},e.prototype.showRobotInfo=function(){0!==n.getRobotName().length?i("#robotName").html(n.getRobotName()):i("#robotName").html("-"),i("#robotSystem").html(n.getRobotRealName()),"wait"===n.getRobotState()||i("#head-navi-icon-robot").hasClass("wait")?(i("#robotStateWait").css("display","inline"),i("#robotStateDisconnected").css("display","none"),i("#robotStateBusy").css("display","none")):"busy"===n.getRobotState()?(i("#robotStateWait").css("display","none"),i("#robotStateDisconnected").css("display","none"),i("#robotStateBusy").css("display","inline")):(i("#robotStateWait").css("display","none"),i("#robotStateDisconnected").css("display","inline"),i("#robotStateBusy").css("display","none")),"EN"==n.getLanguage()?i("#robotBattery").text(n.getRobotBattery()+" V"):i("#robotBattery").text(n.getRobotBattery().toString().replace(".",",")+" V");var e=parseInt(n.getRobotTime(),10);e<1e3?i("#robotWait").text(e+" ms"):i("#robotWait").text(Math.round(e/1e3)+" s"),i("#show-robot-info").modal("show")},e.prototype.showWlanModal=function(){i("#menu-wlan").modal("show")},e.prototype.updateMenuStatus=function(e){switch(e){case 0:i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").removeClass("wait"),n.setRunEnabled(!1),i("#runSourceCodeEditor").addClass("disabled"),i("#menuConnect").parent().addClass("disabled"),p.setIsAgent(!0);break;case 1:p.setIsAgent(!0),i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").addClass("wait"),n.setRunEnabled(!0),i("#runSourceCodeEditor").removeClass("disabled"),i("#menuConnect").parent().addClass("disabled");break;default:p.setIsAgent(!0),i("#menuConnect").parent().removeClass("disabled"),""==n.getRobotPort()?(i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").removeClass("wait"),n.setRunEnabled(!1)):(i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").addClass("wait"),n.setRunEnabled(!0),i("#runSourceCodeEditor").removeClass("disabled"))}},e}();o.AbstractConnection=u;var b=function(e){function o(){var o=null!==e&&e.apply(this,arguments)||this;return o.skipDownloadPopup=!1,o}return __extends(o,e),o.prototype.init=function(){this.clearDownloadModal(),n.setPing(!1),i("#head-navi-icon-robot").removeClass("error"),i("#head-navi-icon-robot").removeClass("busy"),i("#head-navi-icon-robot").addClass("wait"),n.setRunEnabled(!0),i("#runSourceCodeEditor").removeClass("disabled"),i("#menuConnect").parent().addClass("disabled")},o.prototype.isRobotConnected=function(){return!0},o.prototype.createDownloadLink=function(e,o){var t;if("msSaveOrOpenBlob"in navigator&&(d.download(e,o),n.setConnectionState("error")),"Blob"in window){var a=new Blob([o],{type:"application/octet-stream"});"msSaveOrOpenBlob"in navigator?navigator.msSaveOrOpenBlob(a,e):((t=document.createElement("a")).download=e,t.innerHTML=e,t.href=window.URL.createObjectURL(a))}else(t=document.createElement("a")).setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(o)),t.setAttribute("download",e),t.style.display="none";if(t&&!("msSaveOrOpenBlob"in navigator)){var r=document.createElement("div");r.setAttribute("id","programLink");var s=document.createElement("br");r.setAttribute("style","text-align: center;"),r.appendChild(s),r.appendChild(t),t.setAttribute("style","font-size:36px"),i("#downloadLink").append(r)}},o.prototype.runFileDownload=function(e,o,t){var a=(e.programName||n.getProgramName())+"."+n.getBinaryFileExtension();if("bin"!==n.getBinaryFileExtension()&&"uf2"!==n.getBinaryFileExtension()||(e.compiledCode=d.base64decode(e.compiledCode)),t||null!==navigator.userAgent.toLowerCase().match(/iPad|iPhone|android/i))d.download(a,e.compiledCode),setTimeout((function(){n.setConnectionState("wait")}),5e3),l.displayInformation(e,e.message,e.message,n.getProgramName(),n.getRobot());else{this.createDownloadLink(a,e.compiledCode);for(var r=1;c.Msg["POPUP_DOWNLOAD_STEP_"+r];r++){var s=i('
  • '),p=c.Msg["POPUP_DOWNLOAD_STEP_"+r+"_"+n.getRobotGroup().toUpperCase()]||c.Msg["POPUP_DOWNLOAD_STEP_"+r]||"POPUP_DOWNLOAD_STEP_"+r;s.html(''+p+""),s.css("opacity","0"),i("#download-instructions").append(s)}i("#download-instructions li").each((function(e){i(this).html(i(this).html().replace("$",o))})),i("#download-instructions li").each((function(e){i(this).delay(750*e).animate({opacity:1},1e3)}))}},o.prototype.setTransferProgress=function(e){i("#progressBar").width("".concat(100*e,"%")),i("#transfer").text("".concat(Math.ceil(100*e),"%"))},o.prototype.showProgressBarModal=function(){var e=i("#popupDownloadHeader").text();i("#popupDownloadHeader").text(e.replace("$",i.trim(n.getRobotRealName()))),i("#downloadType").addClass("hidden"),i("#status").removeClass("hidden"),i("#programHint").addClass("hidden"),i("#changedDownloadFolder").addClass("hidden"),i("#OKButtonModalFooter").addClass("hidden"),i("#save-client-compiled-program").modal("show")},o.prototype.setResetModalListener=function(){var e=this;i("#save-client-compiled-program").oneWrap("hidden.bs.modal",(function(o){var t=i("#popupDownloadHeader").text();i("#popupDownloadHeader").text(t.replace(i.trim(n.getRobotRealName()),"$")),i("#label-checkbox").is(":checked")&&e.setSkipDownloadPopup(!0),e.clearDownloadModal(),(0,a.setConnectionState)("wait")}))},o.prototype.setSkipDownloadPopup=function(e){this.skipDownloadPopup=e},o.prototype.clearDownloadModal=function(){i("#programLink").remove(),i("#download-instructions").empty(),i("#programHint").removeClass("hidden"),i("#changedDownloadFolder").removeClass("hidden"),i("#OKButtonModalFooter").removeClass("hidden"),i("#downloadType").addClass("hidden"),i("#status").addClass("hidden"),i("#progressBar").width("0%"),i("#transfer").text("0%"),i("#webUsb").off("click"),i("#fileDownload").off("click")},o}(u);o.AbstractPromptConnection=b})); //# sourceMappingURL=abstract.connections.js.map //# sourceMappingURL=abstract.connections.js.map diff --git a/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/connections.js b/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/connections.js index 9d7393e52a..99d054f186 100644 --- a/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/connections.js +++ b/OpenRobertaServer/staticResources/js/app/roberta/controller/connections/connections.js @@ -1,3 +1,3 @@ -var __extends=this&&this.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function o(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),__awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))((function(r,i){function s(t){try{c(o.next(t))}catch(t){i(t)}}function a(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,a)}c((o=o.apply(t,e||[])).next())}))},__generator=this&&this.__generator||function(t,e){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,o&&(r=2&a[0]?o.return:a[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,a[1])).done)return r;switch(o=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,o=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]'),p=d.Msg["POPUP_DOWNLOAD_STEP_"+u+"_"+r.getRobotGroup().toUpperCase()]||d.Msg["POPUP_DOWNLOAD_STEP_"+u]||"POPUP_DOWNLOAD_STEP_"+u;l.html(''+p+""),l.css("opacity","0"),o("#download-instructions").append(l)}o("#save-client-compiled-program").oneWrap("shown.bs.modal",(function(t){o("#download-instructions li").each((function(t){o(this).delay(750*t).animate({opacity:1},1e3)}))})),o("#save-client-compiled-program").oneWrap("hidden.bs.modal",(function(n){window.msCrypto||(e.pause(),e.load());var i=o("#popupDownloadHeader").text();o("#popupDownloadHeader").text(i.replace(o.trim(r.getRobotRealName()),"$")),o("#programLink").remove(),o("#download-instructions").empty(),r.setConnectionState("wait"),a.displayInformation(t,t.message,t.message,r.getProgramName(),r.getRobot()),o("#changedDownloadFolder").removeClass("hidden"),o("#OKButtonModalFooter").removeClass("hidden")})),o("#save-client-compiled-program").modal("show")}},e.prototype.terminate=function(){t.prototype.terminate.call(this),this.clearDownloadModal()},e.prototype.setState=function(){},e.prototype.createPlayButton=function(t){var e;if(o("#trA").removeClass("hidden"),"Blob"in window){(e=document.createElement("button")).setAttribute("type","button"),e.setAttribute("class","btn btn-primary");var n=!1;e.onclick=function(){0==n?(t.play(),r.setAttribute("class","typcn typcn-media-stop"),n=!0,t.addEventListener("ended",(function(){o("#save-client-compiled-program").modal("hide")}))):(r.setAttribute("class","typcn typcn-media-play"),t.pause(),t.load(),n=!1)};var r=document.createElement("span");r.setAttribute("class","typcn typcn-media-play"),r.setAttribute("style","color : black"),e.appendChild(r)}if(e){var i=document.createElement("div");i.setAttribute("id","programLink"),i.setAttribute("style","text-align: center;"),i.appendChild(document.createElement("br")),i.appendChild(e),e.setAttribute("style","font-size:36px"),o("#downloadLink").append(i)}},e}(n.AbstractPromptConnection);e.AudioConnection=_;var C,y,w,R=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.selectedNode=void 0,e.startTime=void 0,e.terminated=!1,e}return __extends(e,t),e.prototype.runOnBrick=function(t,e,n){var o=this;i.showSourceProgram(r.getProgramName(),t,e,n,h.getSSID(),h.getPassword(),r.getLanguage(),(function(t){o.run(t),h.reloadProgram(t)}))},e.prototype.init=function(){r.setPing(!0),r.setPingTime(r.SHORT),r.getBlocklyWorkspace().robControls.showStopProgram(),this.initNode()},e.prototype.initNode=function(){var t=this;this.terminated?this.terminate():this.selectedNode?this.selectedNode.status==p.NodeStatus.ready&&this.publishConnected():(this.client=p.createClient(e.URL),this.client.onClose=function(e){t.selectedNode=void 0,t.publishDisonnected(),setTimeout((function(){t.initNode()}),1e3)},this.client.onNodesChanged=function(e){return __awaiter(t,void 0,void 0,(function(){var t,n,o,i;return __generator(this,(function(s){switch(s.label){case 0:s.trys.push([0,8,,9]),t=0,n=e,s.label=1;case 1:if(!(tthis.maxProgramSize)throw new S(null,"BLE_ERROR_PROGRAM_SIZE",w.ALERT);return this.downloadInProgress||this.oldProgram!=t?[3,3]:(n(1),[4,this.stopProgram()]);case 1:return s.sent(),[4,this.startProgram()];case 2:return[2,s.sent()];case 3:return s.trys.push([3,9,10,11]),this.downloadInProgress=!0,[4,this.stopProgram()];case 4:return s.sent(),[4,this.invalidateProgram()];case 5:return s.sent(),[4,this.transferProgramAsChunks(o,r,n)];case 6:return s.sent(),[4,this.updateProgramSize(o.size)];case 7:return s.sent(),this.oldProgram=t,[4,this.startProgram()];case 8:return s.sent(),[3,11];case 9:throw i=s.sent(),this.oldProgram="",new S(i,"BLE_ERROR_COMMUNICATION",w.ALERT);case 10:return this.downloadInProgress=!1,[7];case 11:return[2]}}))}))},e.prototype.disconnect=function(){null!=this.gattServer&&this.gattServer.disconnect(),this.gattServer=null,this.bleDevice=null},e.prototype.isConnected=function(){return null!==this.gattServer&&this.gattServer.connected},e.prototype.assertWebBleAvailability=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:if(!s.isWebBleSupported())throw new S(null,"BLE_NOT_SUPPORTED",w.ALERT);if(void 0===navigator.bluetooth)throw new S(null,"BLE_FEATURE_DISABLED",w.ALERT);return[4,navigator.bluetooth.getAvailability()];case 1:if(!t.sent())throw new S(null,"BLE_ADAPTER_DISABLED",w.ALERT);return[2]}}))}))},e.prototype.requestDevice=function(){return __awaiter(this,void 0,void 0,(function(){var t,e;return __generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),t=this,[4,navigator.bluetooth.requestDevice({filters:[{services:[C.PYBRICKS_SERVICE_UUID]}],optionalServices:[C.PYBRICKS_SERVICE_UUID,C.DEVICE_INFORMATION_SERVICE_UUID,C.NORDIC_UART_SERVICE_UUID]})];case 1:return t.bleDevice=n.sent(),[3,3];case 2:throw e=n.sent(),new S(e,"BLE_NO_DEVICE_SELECTED",w.ALERT);case 3:return[2]}}))}))},e.prototype.connectToGattServer=function(){return __awaiter(this,void 0,void 0,(function(){var t,e=this;return __generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.bleDevice.gatt.connect().then((function(t){return e.gattServer=t}))];case 1:return n.sent(),[3,3];case 2:throw t=n.sent(),new S(t,"BLE_ERROR_DEVICE_BUSY",w.ALERT);case 3:return[2]}}))}))},e.prototype.getHubCapabilities=function(){return __awaiter(this,void 0,void 0,(function(){var t,e=this;return __generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.gattServer.getPrimaryService(C.PYBRICKS_SERVICE_UUID).then((function(t){return __awaiter(e,void 0,void 0,(function(){var e=this;return __generator(this,(function(n){switch(n.label){case 0:return[4,t.getCharacteristic(C.PYBRICKS_HUB_CAPABILITIES_CHARACTERISTIC_UUID).then((function(t){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(n){switch(n.label){case 0:return[4,t.readValue()];case 1:return e=n.sent(),this.maxWriteSize=e.getUint16(0,!0),this.maxProgramSize=e.getUint32(6,!0),[2]}}))}))}))];case 1:return n.sent(),[2]}}))}))}))];case 1:return n.sent(),[3,3];case 2:throw t=n.sent(),new S(t,"BLE_ERROR_CAPABILITIES",w.ALERT);case 3:return[2]}}))}))},e.prototype.transferProgramAsChunks=function(t,e,n){return __awaiter(this,void 0,void 0,(function(){var o,r,i;return __generator(this,(function(s){switch(s.label){case 0:o=t.size>e?e:t.size,r=0,s.label=1;case 1:return r0},e.prototype.run=function(t){r.setState(t),a.displayInformation(t,t.message,t.message,t.programName||r.getProgramName(),r.getRobot()),"ok"==t.rc?d.Msg["MENU_ROBOT_STOP_HINT_"+r.getRobotGroup().toUpperCase()]&&a.displayMessage("MENU_ROBOT_STOP_HINT_"+r.getRobotGroup().toUpperCase(),"TOAST"):r.setConnectionState("error")},e.prototype.showConnectionModal=function(){o("#buttonCancelFirmwareUpdate").css("display","inline"),o("#buttonCancelFirmwareUpdateAndRun").css("display","none"),u.showSetTokenModal(8,8)},e.prototype.stopProgram=function(){i.stopProgram((function(){}))},e}(n.AbstractConnection),A=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.portList=[],e.vendorList=[],e.productList=[],e.robotList=[],e.agentPortList='[{"Name":"none","IdVendor":"none","IdProduct":"none"}]',e}return __extends(e,t),e.prototype.init=function(){var e=this;t.prototype.init.call(this);var n=g.getSocket();null!=n&&0!=g.getIsAgent()||(n=v("ws://127.0.0.1:8991/"),g.setSocket(n),g.setIsAgent(!0),o("#menuConnect").parent().addClass("disabled"),n.on("connect_error",(function(t){g.setIsAgent(!1)})),n.on("connect",(function(){n.emit("command","log on"),g.setIsAgent(!0),window.setInterval((function(){e.portList=[],e.vendorList=[],e.productList=[],e.robotList=[],n.emit("command","list")}),3e3)})),n.on("message",(function(t){if(t.includes('"Network": false'))(i=JSON.parse(t)).Ports.forEach((function(t){r.getVendor()===t.VendorID.toLowerCase()&&(e.portList.push(t.Name),e.vendorList.push(t.VendorID),e.productList.push(t.ProductID),e.robotList.push(r.getRobotRealName()))})),g.setIsAgent(!0),n.on("connect_error",(function(t){g.setIsAgent(!1),o("#menuConnect").parent().removeClass("disabled")})),e.portList.indexOf(r.getRobotPort())<0&&(r.getRobotPort(),r.setRobotPort("")),1==e.portList.length&&u.setPort(e.portList[0]),r.updateMenuStatus(e.getPortList().length);else if(t.includes("OS")){var i=JSON.parse(t);e.system=i.OS}})),n.on("disconnect",(function(){})),n.on("error",(function(t){}))),this.listRobotStart()},e.prototype.isRobotConnected=function(){return!0},e.prototype.terminate=function(){this.listRobotStop(),this.closeConnection(),t.prototype.terminate.call(this)},e.prototype.showConnectionModal=function(){if(1==g.getIsAgent()){var e=this.getPortList(),n=this.getRobotList();o("#singleModalListInput").empty();var r=0;e.forEach((function(t){o("#singleModalListInput").append('"),r++})),u.showListModal()}else t.prototype.showConnectionModal.call(this)},e.prototype.run=function(t){o("#menuRunProg").parent().addClass("disabled"),o("#head-navi-icon-robot").addClass("busy"),r.setState(t),"ok"==t.rc?(this.uploadProgram(t.compiledCode,r.getRobotPort()),setTimeout((function(){r.setConnectionState("error")}),5e3)):r.setConnectionState("error"),a.displayInformation(t,t.message,t.message,r.getProgramName())},e.prototype.setState=function(){!0!==g.getIsAgent()&&(o("#menuConnect").parent().removeClass("disabled"),"wait"===c.robot.state?(o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").addClass("wait"),r.setRunEnabled(!0),o("#runSourceCodeEditor").removeClass("disabled")):"busy"===c.robot.state?(o("#head-navi-icon-robot").removeClass("wait"),o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").addClass("busy"),r.setRunEnabled(!1),o("#runSourceCodeEditor").addClass("disabled")):(o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").removeClass("wait"),o("#head-navi-icon-robot").addClass("error"),r.setRunEnabled(!1),o("#runSourceCodeEditor").addClass("disabled")))},e.prototype.updateMenuStatus=function(t){switch(t){case 0:g.setIsAgent(!1);break;case 1:g.setIsAgent(!0),o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").addClass("wait"),r.setRunEnabled(!0),o("#runSourceCodeEditor").removeClass("disabled"),o("#menuConnect").parent().addClass("disabled");break;default:g.setIsAgent(!0),o("#menuConnect").parent().removeClass("disabled"),""==r.getRobotPort()?(o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").removeClass("wait"),r.setRunEnabled(!1)):(o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").addClass("wait"),r.setRunEnabled(!0),o("#runSourceCodeEditor").removeClass("disabled"))}},e.prototype.makeRequest=function(){var t=this;this.portList=[],this.vendorList=[],this.productList=[],this.robotList=[],m.listRobotsFromAgent((function(t){}),(function(e){t.agentPortList=e.responseText}),(function(){}));try{JSON.parse(this.agentPortList).forEach((function(e){r.getVendor()===e.IdVendor.toLowerCase()&&(t.portList.push(e.Name),t.vendorList.push(e.IdVendor),t.productList.push(e.IdProduct),t.robotList.push(r.getRobotRealName()))}))}catch(t){r.setRobotPort("")}this.portList.indexOf(r.getRobotPort())<0&&r.setRobotPort(""),1==this.portList.length&&u.setPort(this.portList[0]),r.updateMenuStatus(this.getPortList().length)},e.prototype.listRobotStart=function(){var t=this;o("#menuConnect").parent().addClass("disabled"),this.makeRequest(),this.timerId=window.setInterval((function(){t.makeRequest()}),3e3)},e.prototype.listRobotStop=function(){o("#menuConnect").parent().addClass("disabled"),window.clearInterval(this.timerId)},e.prototype.closeConnection=function(){var t=g.getSocket();null!=t&&(t.disconnect(),g.setSocket(null))},e.prototype.getPortList=function(){return this.portList},e.prototype.getRobotList=function(){return this.robotList},e.prototype.uploadProgram=function(t,e){m.sendProgramHexToAgent(t,e,r.getProgramName(),r.getSignature(),r.getCommandLine(),(function(){b.text("Create agent upload success"),o("#menuRunProg").parent().removeClass("disabled"),o("#runOnBrick").parent().removeClass("disabled")}))},e}(I),T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){this.reset=!1,o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").removeClass("wait"),r.setRunEnabled(!1),o("#menuConnect").parent().removeClass("disabled"),r.inWebview()?o("#robotConnect").removeClass("disabled"):o("#robotConnect").addClass("disabled"),o("#runSourceCodeEditor").addClass("disabled"),r.setPingTime(r.LONG)},e.prototype.isRobotConnected=function(){return f.isRobotConnected()},e.prototype.run=function(t){if(a.displayInformation(t,t.message,t.message,r.getProgramName()),"ok"===t.rc){var e=t.compiledCode,n=JSON.parse(e);if(this.interpreter=f.getInterpreter(n),null!==this.interpreter){r.setConnectionState("busy"),r.getBlocklyWorkspace().robControls.switchToStop();try{this.runStepInterpreter()}catch(t){this.interpreter.terminate(),this.interpreter=null,alert(t)}}}},e.prototype.runStepInterpreter=function(){if(!this.interpreter.isTerminated()&&!this.reset){var t=(new Date).getTime()+100,e=Math.max(100,this.interpreter.run(t));this.timeout(this.runStepInterpreter,e)}},e.prototype.timeout=function(t,e){e>100?(e-=100,setTimeout(this.timeout,100,(function(){t()}),e)):setTimeout((function(){t()}),e)},e.prototype.setState=function(){},e.prototype.stopProgram=function(){null!==this.interpreter&&this.interpreter.terminate()},e.prototype.showConnectionModal=function(){u.showScanModal()},e}(n.AbstractConnection),N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),this.shortFormForDownloadPopup="MINI"},e}(E),D=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(A);e.Bob3Connection=D;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(A);e.BotnrollConnection=O;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.FestobionicflowerConnection=M;var U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.FestobionicConnection=U;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.MbotConnection=L;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.MegaConnection=x;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.NanoConnection=k;var B=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Nano33bleConnection=B;var W=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(A);e.Rob3rtaConnection=W;var F=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),o("#robotWlan").removeClass("hidden")},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#robotWlan").addClass("hidden")},e}(E);e.SenseboxConnection=F;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.UnoConnection=V;var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Unowifirev2Connection=G;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Mbot2Connection=H;var K=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(_);e.EdisonConnection=K;var Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(_);e.Ev3Connection=Y;var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Ev3c4ev3Connection=z;var j=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Ev3devConnection=j;var q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Ev3lejosv0Connection=q;var J=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Ev3lejosv1Connection=J;var Z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.XNNConnection=Z;var $=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(N);e.Calliope2016Connection=$;var X=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(N);e.Calliope2017Connection=X;var Q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(N);e.Calliope2017NoBlueConnection=Q;var tt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.JoycarConnection=tt;var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.MicrobitConnection=et;var nt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Microbitv2Connection=nt;var ot=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Calliopev3Connection=ot;var rt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.NaoConnection=rt;var it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.NxtConnection=it;var st=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),o("#robotWlan").removeClass("hidden"),c.gui.blocklyWorkspace&&c.gui.blocklyWorkspace.robControls.showStopProgram()},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#robotWlan").addClass("hidden"),c.gui.blocklyWorkspace&&c.gui.blocklyWorkspace.robControls.hideStopProgram()},e}(I);e.RobotinoConnection=st;var at=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),o("#robotWlan").removeClass("hidden")},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#robotWlan").addClass("hidden")},e}(I);e.RobotinoROSConnection=at;var ct=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(P);e.SpikePybricksConnection=ct;var ut=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.SpikeConnection=ut;var lt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.showConnectionModal=function(){o("#buttonCancelFirmwareUpdate").css("display","inline"),o("#buttonCancelFirmwareUpdateAndRun").css("display","none"),u.showSetTokenModal(6,8)},e.prototype.init=function(){t.prototype.init.call(this),r.getBlocklyWorkspace().robControls.showStopProgram(),o("#stopProgram").addClass("disabled")},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#stopProgram").addClass("disabled"),r.getBlocklyWorkspace().robControls.hideStopProgram(),r.setRobotToken("")},e}(I);e.Txt4Connection=lt;var dt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(R);e.ThymioConnection=dt;var pt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(T);e.WedoConnection=pt;var ht=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){r.setConnectionState("wait"),o("#runSourceCodeEditor").removeClass("disabled"),o("#menuConnect").parent().addClass("disabled"),r.setPing(!1)},e.prototype.isRobotConnected=function(){return!0},e.prototype.run=function(t){var e=(t.programName||r.getProgramName())+"."+r.getBinaryFileExtension();"bin"!==r.getBinaryFileExtension()&&"uf2"!==r.getBinaryFileExtension()||(t.compiledCode=s.base64decode(t.compiledCode)),s.download(e,t.compiledCode),setTimeout((function(){r.setConnectionState("wait")}),5e3),a.displayInformation(t,t.message,t.message,r.getProgramName(),r.getRobot())},e.prototype.setState=function(){},e}(n.AbstractConnection);e.LocalConnection=ht})); +var __extends=this&&this.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},t(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function o(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),__awaiter=this&&this.__awaiter||function(t,e,n,o){return new(n||(n=Promise))((function(r,i){function s(t){try{c(o.next(t))}catch(t){i(t)}}function a(t){try{c(o.throw(t))}catch(t){i(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,a)}c((o=o.apply(t,e||[])).next())}))},__generator=this&&this.__generator||function(t,e){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(n=1,o&&(r=2&a[0]?o.return:a[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,a[1])).done)return r;switch(o=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,o=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]this.maxProgramSize)throw new R(null,"BLE_ERROR_PROGRAM_SIZE",y.ALERT);return this.downloadInProgress||this.oldProgram!=t?[3,3]:(n(1),[4,this.stopProgram()]);case 1:return s.sent(),[4,this.startProgram()];case 2:return[2,s.sent()];case 3:return s.trys.push([3,9,10,11]),this.downloadInProgress=!0,[4,this.stopProgram()];case 4:return s.sent(),[4,this.invalidateProgram()];case 5:return s.sent(),[4,this.transferProgramAsChunks(o,r,n)];case 6:return s.sent(),[4,this.updateProgramSize(o.size)];case 7:return s.sent(),this.oldProgram=t,[4,this.startProgram()];case 8:return s.sent(),[3,11];case 9:throw i=s.sent(),this.oldProgram="",new R(i,"BLE_ERROR_COMMUNICATION",y.ALERT);case 10:return this.downloadInProgress=!1,[7];case 11:return[2]}}))}))},e.prototype.disconnect=function(){null!=this.gattServer&&this.gattServer.disconnect(),this.gattServer=null,this.bleDevice=null},e.prototype.isConnected=function(){return null!==this.gattServer&&this.gattServer.connected},e.prototype.assertWebBleAvailability=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:if(!s.isWebBleSupported())throw new R(null,"BLE_NOT_SUPPORTED",y.ALERT);if(void 0===navigator.bluetooth)throw new R(null,"BLE_FEATURE_DISABLED",y.ALERT);return[4,navigator.bluetooth.getAvailability()];case 1:if(!t.sent())throw new R(null,"BLE_ADAPTER_DISABLED",y.ALERT);return[2]}}))}))},e.prototype.requestDevice=function(){return __awaiter(this,void 0,void 0,(function(){var t,e;return __generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),t=this,[4,navigator.bluetooth.requestDevice({filters:[{services:[g.PYBRICKS_SERVICE_UUID]}],optionalServices:[g.PYBRICKS_SERVICE_UUID,g.DEVICE_INFORMATION_SERVICE_UUID,g.NORDIC_UART_SERVICE_UUID]})];case 1:return t.bleDevice=n.sent(),[3,3];case 2:throw e=n.sent(),new R(e,"BLE_NO_DEVICE_SELECTED",y.ALERT);case 3:return[2]}}))}))},e.prototype.connectToGattServer=function(){return __awaiter(this,void 0,void 0,(function(){var t,e=this;return __generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.bleDevice.gatt.connect().then((function(t){return e.gattServer=t}))];case 1:return n.sent(),[3,3];case 2:throw t=n.sent(),new R(t,"BLE_ERROR_DEVICE_BUSY",y.ALERT);case 3:return[2]}}))}))},e.prototype.getHubCapabilities=function(){return __awaiter(this,void 0,void 0,(function(){var t,e=this;return __generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.gattServer.getPrimaryService(g.PYBRICKS_SERVICE_UUID).then((function(t){return __awaiter(e,void 0,void 0,(function(){var e=this;return __generator(this,(function(n){switch(n.label){case 0:return[4,t.getCharacteristic(g.PYBRICKS_HUB_CAPABILITIES_CHARACTERISTIC_UUID).then((function(t){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(n){switch(n.label){case 0:return[4,t.readValue()];case 1:return e=n.sent(),this.maxWriteSize=e.getUint16(0,!0),this.maxProgramSize=e.getUint32(6,!0),[2]}}))}))}))];case 1:return n.sent(),[2]}}))}))}))];case 1:return n.sent(),[3,3];case 2:throw t=n.sent(),new R(t,"BLE_ERROR_CAPABILITIES",y.ALERT);case 3:return[2]}}))}))},e.prototype.transferProgramAsChunks=function(t,e,n){return __awaiter(this,void 0,void 0,(function(){var o,r,i;return __generator(this,(function(s){switch(s.label){case 0:o=t.size>e?e:t.size,r=0,s.label=1;case 1:return r0},e.prototype.run=function(t){r.setState(t),a.displayInformation(t,t.message,t.message,t.programName||r.getProgramName(),r.getRobot()),"ok"==t.rc?d.Msg["MENU_ROBOT_STOP_HINT_"+r.getRobotGroup().toUpperCase()]&&a.displayMessage("MENU_ROBOT_STOP_HINT_"+r.getRobotGroup().toUpperCase(),"TOAST"):r.setConnectionState("error")},e.prototype.showConnectionModal=function(){o("#buttonCancelFirmwareUpdate").css("display","inline"),o("#buttonCancelFirmwareUpdateAndRun").css("display","none"),u.showSetTokenModal(8,8)},e.prototype.stopProgram=function(){i.stopProgram((function(){}))},e}(n.AbstractConnection),I=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.portList=[],e.vendorList=[],e.productList=[],e.robotList=[],e.agentPortList='[{"Name":"none","IdVendor":"none","IdProduct":"none"}]',e}return __extends(e,t),e.prototype.init=function(){var e=this;t.prototype.init.call(this);var n=v.getSocket();null!=n&&0!=v.getIsAgent()||(n=_("ws://127.0.0.1:8991/"),v.setSocket(n),v.setIsAgent(!0),o("#menuConnect").parent().addClass("disabled"),n.on("connect_error",(function(t){v.setIsAgent(!1)})),n.on("connect",(function(){n.emit("command","log on"),v.setIsAgent(!0),window.setInterval((function(){e.portList=[],e.vendorList=[],e.productList=[],e.robotList=[],n.emit("command","list")}),3e3)})),n.on("message",(function(t){if(t.includes('"Network": false'))(i=JSON.parse(t)).Ports.forEach((function(t){r.getVendor()===t.VendorID.toLowerCase()&&(e.portList.push(t.Name),e.vendorList.push(t.VendorID),e.productList.push(t.ProductID),e.robotList.push(r.getRobotRealName()))})),v.setIsAgent(!0),n.on("connect_error",(function(t){v.setIsAgent(!1),o("#menuConnect").parent().removeClass("disabled")})),e.portList.indexOf(r.getRobotPort())<0&&(r.getRobotPort(),r.setRobotPort("")),1==e.portList.length&&u.setPort(e.portList[0]),r.updateMenuStatus(e.getPortList().length);else if(t.includes("OS")){var i=JSON.parse(t);e.system=i.OS}})),n.on("disconnect",(function(){})),n.on("error",(function(t){}))),this.listRobotStart()},e.prototype.isRobotConnected=function(){return!0},e.prototype.terminate=function(){this.listRobotStop(),this.closeConnection(),t.prototype.terminate.call(this)},e.prototype.showConnectionModal=function(){if(1==v.getIsAgent()){var e=this.getPortList(),n=this.getRobotList();o("#singleModalListInput").empty();var r=0;e.forEach((function(t){o("#singleModalListInput").append('"),r++})),u.showListModal()}else t.prototype.showConnectionModal.call(this)},e.prototype.run=function(t){o("#menuRunProg").parent().addClass("disabled"),o("#head-navi-icon-robot").addClass("busy"),r.setState(t),"ok"==t.rc?(this.uploadProgram(t.compiledCode,r.getRobotPort()),setTimeout((function(){r.setConnectionState("error")}),5e3)):r.setConnectionState("error"),a.displayInformation(t,t.message,t.message,r.getProgramName())},e.prototype.setState=function(){!0!==v.getIsAgent()&&(o("#menuConnect").parent().removeClass("disabled"),"wait"===c.robot.state?(o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").addClass("wait"),r.setRunEnabled(!0),o("#runSourceCodeEditor").removeClass("disabled")):"busy"===c.robot.state?(o("#head-navi-icon-robot").removeClass("wait"),o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").addClass("busy"),r.setRunEnabled(!1),o("#runSourceCodeEditor").addClass("disabled")):(o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").removeClass("wait"),o("#head-navi-icon-robot").addClass("error"),r.setRunEnabled(!1),o("#runSourceCodeEditor").addClass("disabled")))},e.prototype.updateMenuStatus=function(t){switch(t){case 0:v.setIsAgent(!1);break;case 1:v.setIsAgent(!0),o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").addClass("wait"),r.setRunEnabled(!0),o("#runSourceCodeEditor").removeClass("disabled"),o("#menuConnect").parent().addClass("disabled");break;default:v.setIsAgent(!0),o("#menuConnect").parent().removeClass("disabled"),""==r.getRobotPort()?(o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").removeClass("wait"),r.setRunEnabled(!1)):(o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").addClass("wait"),r.setRunEnabled(!0),o("#runSourceCodeEditor").removeClass("disabled"))}},e.prototype.makeRequest=function(){var t=this;this.portList=[],this.vendorList=[],this.productList=[],this.robotList=[],m.listRobotsFromAgent((function(t){}),(function(e){t.agentPortList=e.responseText}),(function(){}));try{JSON.parse(this.agentPortList).forEach((function(e){r.getVendor()===e.IdVendor.toLowerCase()&&(t.portList.push(e.Name),t.vendorList.push(e.IdVendor),t.productList.push(e.IdProduct),t.robotList.push(r.getRobotRealName()))}))}catch(t){r.setRobotPort("")}this.portList.indexOf(r.getRobotPort())<0&&r.setRobotPort(""),1==this.portList.length&&u.setPort(this.portList[0]),r.updateMenuStatus(this.getPortList().length)},e.prototype.listRobotStart=function(){var t=this;o("#menuConnect").parent().addClass("disabled"),this.makeRequest(),this.timerId=window.setInterval((function(){t.makeRequest()}),3e3)},e.prototype.listRobotStop=function(){o("#menuConnect").parent().addClass("disabled"),window.clearInterval(this.timerId)},e.prototype.closeConnection=function(){var t=v.getSocket();null!=t&&(t.disconnect(),v.setSocket(null))},e.prototype.getPortList=function(){return this.portList},e.prototype.getRobotList=function(){return this.robotList},e.prototype.uploadProgram=function(t,e){m.sendProgramHexToAgent(t,e,r.getProgramName(),r.getSignature(),r.getCommandLine(),(function(){b.text("Create agent upload success"),o("#menuRunProg").parent().removeClass("disabled"),o("#runOnBrick").parent().removeClass("disabled")}))},e}(E),A=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){this.reset=!1,o("#head-navi-icon-robot").removeClass("error"),o("#head-navi-icon-robot").removeClass("busy"),o("#head-navi-icon-robot").removeClass("wait"),r.setRunEnabled(!1),o("#menuConnect").parent().removeClass("disabled"),r.inWebview()?o("#robotConnect").removeClass("disabled"):o("#robotConnect").addClass("disabled"),o("#runSourceCodeEditor").addClass("disabled"),r.setPingTime(r.LONG)},e.prototype.isRobotConnected=function(){return f.isRobotConnected()},e.prototype.run=function(t){if(a.displayInformation(t,t.message,t.message,r.getProgramName()),"ok"===t.rc){var e=t.compiledCode,n=JSON.parse(e);if(this.interpreter=f.getInterpreter(n),null!==this.interpreter){r.setConnectionState("busy"),r.getBlocklyWorkspace().robControls.switchToStop();try{this.runStepInterpreter()}catch(t){this.interpreter.terminate(),this.interpreter=null,alert(t)}}}},e.prototype.runStepInterpreter=function(){if(!this.interpreter.isTerminated()&&!this.reset){var t=(new Date).getTime()+100,e=Math.max(100,this.interpreter.run(t));this.timeout(this.runStepInterpreter,e)}},e.prototype.timeout=function(t,e){e>100?(e-=100,setTimeout(this.timeout,100,(function(){t()}),e)):setTimeout((function(){t()}),e)},e.prototype.setState=function(){},e.prototype.stopProgram=function(){null!==this.interpreter&&this.interpreter.terminate()},e.prototype.showConnectionModal=function(){u.showScanModal()},e}(n.AbstractConnection),T=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),this.shortFormForDownloadPopup="MINI"},e}(P),N=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Bob3Connection=N;var O=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.BotnrollConnection=O;var D=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.FestobionicflowerConnection=D;var M=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.FestobionicConnection=M;var U=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.MbotConnection=U;var L=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.MegaConnection=L;var x=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.NanoConnection=x;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Nano33bleConnection=k;var B=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(I);e.Rob3rtaConnection=B;var W=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),o("#robotWlan").removeClass("hidden")},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#robotWlan").addClass("hidden")},e}(P);e.SenseboxConnection=W;var F=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.UnoConnection=F;var V=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Unowifirev2Connection=V;var G=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Mbot2Connection=G;var H=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.run=function(t){if("ok"!==t.rc)r.setConnectionState("wait"),a.displayInformation(t,t.message,t.message,r.getProgramName(),r.getRobot());else{var n=e.API_URL+e.API_LONG;(s.isChromeOS()||s.isWindowsOS())&&(n=e.API_URL+e.API_SHORT),o("#changedDownloadFolder").addClass("hidden"),o("#OKButtonModalFooter").addClass("hidden");var c,u=o("#popupDownloadHeader").text();o("#popupDownloadHeader").text(u.replace("$",r.getRobotRealName().trim()));for(var l=1;d.Msg["POPUP_DOWNLOAD_STEP_"+l];l++){var p=o('
  • '),h=d.Msg["POPUP_DOWNLOAD_STEP_"+l+"_"+r.getRobotGroup().toUpperCase()]||d.Msg["POPUP_DOWNLOAD_STEP_"+l]||"POPUP_DOWNLOAD_STEP_"+l;p.html(''+h+""),o("#download-instructions").append(p)}o("#save-client-compiled-program").oneWrap("hidden.bs.modal",(function(t){r.setConnectionState("wait"),c&&!window.msCrypto&&(c.pause(),c.load()),f.clearDownloadModal()})),o("body>.pace").fadeIn();var f=this,m=function(t){r.setConnectionState("wait"),f.clearDownloadModal(),o("body>.pace").fadeOut(400,(function(){a.displayPopupMessage("ORA_PROGRAM_SAVE_AS_ERROR_PROGRAM_EXISTS",t,"OK")}))};i.externAPIRequest(n,t.compiledCode,(function(t){try{if("true"==t.compile){var e=t.wav;c=new Audio(e),f.createPlayButton(c),o("body>.pace").fadeOut(400,(function(){o("#save-client-compiled-program").modal("show")}))}else m("Compiler Error:
    "+t.message)}catch(t){m("API "+n+" usage error")}}),(function(t){m("Compiler "+n+" not available, please try it again later!")}))}},e.prototype.createPlayButton=function(t){var e;if("Blob"in window){(e=document.createElement("button")).setAttribute("type","button"),e.setAttribute("class","btn btn-primary");var n=!1;e.onclick=function(){0==n?(t.play(),r.setAttribute("class","typcn typcn-media-stop"),n=!0,t.addEventListener("ended",(function(){o("#save-client-compiled-program").modal("hide")}))):(r.setAttribute("class","typcn typcn-media-play"),t.pause(),t.load(),n=!1)};var r=document.createElement("span");r.setAttribute("class","typcn typcn-media-play"),r.setAttribute("style","color : #333333"),e.appendChild(r)}if(e){var i=document.createElement("div");i.setAttribute("id","programLink"),i.setAttribute("style","text-align: center;"),i.appendChild(document.createElement("br")),i.appendChild(e),e.setAttribute("style","font-size:36px"),o(i).appendTo("#downloadLink")}},e.prototype.setState=function(){},e.prototype.terminate=function(){t.prototype.terminate.call(this),this.clearDownloadModal()},e.API_URL="https://api.edisonrobotics.net/",e.API_LONG="ep/wav/long",e.API_SHORT="ep/wav/short",e}(n.AbstractPromptConnection);e.EdisonConnection=H;var K=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(P);e.Ev3c4ev3Connection=K;var Y=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Ev3devConnection=Y;var z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Ev3lejosv0Connection=z;var j=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.Ev3lejosv1Connection=j;var q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.XNNConnection=q;var J=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(T);e.Calliope2016Connection=J;var Z=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(T);e.Calliope2017Connection=Z;var $=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(T);e.Calliope2017NoBlueConnection=$;var X=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(P);e.JoycarConnection=X;var Q=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(P);e.MicrobitConnection=Q;var tt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(P);e.Microbitv2Connection=tt;var et=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(P);e.Calliopev3Connection=et;var nt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.NaoConnection=nt;var ot=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.NxtConnection=ot;var rt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),o("#robotWlan").removeClass("hidden"),c.gui.blocklyWorkspace&&c.gui.blocklyWorkspace.robControls.showStopProgram()},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#robotWlan").addClass("hidden"),c.gui.blocklyWorkspace&&c.gui.blocklyWorkspace.robControls.hideStopProgram()},e}(E);e.RobotinoConnection=rt;var it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){t.prototype.init.call(this),o("#robotWlan").removeClass("hidden")},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#robotWlan").addClass("hidden")},e}(E);e.RobotinoROSConnection=it;var st=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(S);e.SpikePybricksConnection=st;var at=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(E);e.SpikeConnection=at;var ct=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.showConnectionModal=function(){o("#buttonCancelFirmwareUpdate").css("display","inline"),o("#buttonCancelFirmwareUpdateAndRun").css("display","none"),u.showSetTokenModal(6,8)},e.prototype.init=function(){t.prototype.init.call(this),r.getBlocklyWorkspace().robControls.showStopProgram(),o("#stopProgram").addClass("disabled")},e.prototype.terminate=function(){t.prototype.terminate.call(this),o("#stopProgram").addClass("disabled"),r.getBlocklyWorkspace().robControls.hideStopProgram(),r.setRobotToken("")},e}(E);e.Txt4Connection=ct;var ut=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(w);e.ThymioConnection=ut;var lt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e}(A);e.WedoConnection=lt;var dt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return __extends(e,t),e.prototype.init=function(){r.setConnectionState("wait"),o("#runSourceCodeEditor").removeClass("disabled"),o("#menuConnect").parent().addClass("disabled"),r.setPing(!1)},e.prototype.isRobotConnected=function(){return!0},e.prototype.run=function(t){var e=(t.programName||r.getProgramName())+"."+r.getBinaryFileExtension();"bin"!==r.getBinaryFileExtension()&&"uf2"!==r.getBinaryFileExtension()||(t.compiledCode=s.base64decode(t.compiledCode)),s.download(e,t.compiledCode),setTimeout((function(){r.setConnectionState("wait")}),5e3),a.displayInformation(t,t.message,t.message,r.getProgramName(),r.getRobot())},e.prototype.setState=function(){},e}(n.AbstractConnection);e.LocalConnection=dt})); //# sourceMappingURL=connections.js.map //# sourceMappingURL=connections.js.map diff --git a/OpenRobertaServer/staticResources/js/app/roberta/models/program.model.js b/OpenRobertaServer/staticResources/js/app/roberta/models/program.model.js index c1babd8ef7..3605b5bfb1 100644 --- a/OpenRobertaServer/staticResources/js/app/roberta/models/program.model.js +++ b/OpenRobertaServer/staticResources/js/app/roberta/models/program.model.js @@ -1,3 +1,3 @@ -define(["require","exports","comm"],(function(r,o,a){Object.defineProperty(o,"__esModule",{value:!0}),o.resetProgram=o.likeProgram=o.checkProgramCompatibility=o.compileP=o.compileN=o.runNative=o.runInSim=o.runOnBrick=o.showSourceProgram=o.refreshList=o.loadProgramEntity=o.loadProgramFromListing=o.deleteProgramFromListing=o.deleteShare=o.shareProgramWithGallery=o.shareProgram=o.exportAllProgramsXml=o.loadProgramFromXML=o.saveProgramToServer=o.saveAsProgramToServer=o.stopProgram=void 0,o.saveAsProgramToServer=function(r,o,e,m,n,g,t){a.json("/program/save",{cmd:"saveAs",programName:r,ownerAccount:o,progXML:e,configName:m,confXML:n,timestamp:g},t,"save program to server with new name '"+r+"'")},o.saveProgramToServer=function(r,o,e,m,n,g,t){a.json("/program/save",{cmd:"save",programName:r,ownerAccount:o,progXML:e,configName:m,confXML:n,timestamp:g},t,"save program '"+r+"' to server")},o.loadProgramFromXML=function(r,o,e){a.json("/program/import",{programName:r,progXML:o},e,"open program '"+r+"' from XML")},o.exportAllProgramsXml=function(){a.download("/program/exportAllPrograms")},o.shareProgram=function(r,o,e){a.json("/program/share",{cmd:"shareP",programName:r,shareData:o},e,"share program '"+r+"' with '"+o.label+"'("+o.type+") having right '"+o.right+"'")},o.shareProgramWithGallery=function(r,o){a.json("/program/share/create",{cmd:"shareWithGallery",programName:r},o,"share program '"+r+"' with Gallery")},o.deleteShare=function(r,o,e,m){a.json("/program/share/delete",{cmd:"shareDelete",programName:r,owner:o,author:e},(function(o){m(o,r)}),"delete share program '"+r+"' owner: "+o)},o.deleteProgramFromListing=function(r,o,e){a.json("/program/delete",{programName:r,author:o},(function(o){e(o,r)}),"delete program '"+r+"'")},o.loadProgramFromListing=function(r,o,e,m){a.json("/program/listing",{programName:r,owner:o,author:e},m,"load program '"+r+"' owned by '"+o+"'")},o.loadProgramEntity=function(r,o,e,m){a.json("/program/entity",{programName:r,owner:e,author:o},m,"load programEntity '"+r+"' owned by '"+e+"'")},o.refreshList=function(r){a.json("/program/listing/names",{},r,"refresh program list")},o.showSourceProgram=function(r,o,e,m,n,g,t,i){a.json("/projectWorkflow/source",{programName:r,configurationName:o,progXML:e,confXML:m,SSID:n,password:g,language:t},i,"show source code of program '"+r+"'")},o.runOnBrick=function(r,o,e,m,n,g,t,i){a.json("/projectWorkflow/run",{programName:r,configurationName:o,progXML:e,confXML:m,SSID:n,password:g,language:t},i,"run program '"+r+"' with configuration '"+o+"'")},o.stopProgram=function(r){a.json("/projectWorkflow/stop",{},r,"stop program ")},o.runInSim=function(r,o,e,m,n,g){a.json("/projectWorkflow/sourceSimulation",{programName:r,configurationName:o,progXML:e,confXML:m,language:n},g,"run program '"+r+"' with configuration '"+o+"'")},o.runNative=function(r,o,e,m){a.json("/projectWorkflow/runNative",{programName:r,progXML:o,language:e},m,"run program '"+r+"'")},o.compileN=function(r,o,e,m){a.json("/projectWorkflow/compileNative",{programName:r,progXML:o,language:e},m,"compile program '"+r+"'")},o.compileP=function(r,o,e,m){a.json("/projectWorkflow/compileProgram",{cmd:"compileP",programName:r,progXML:o,language:e},m,"compile program '"+r+"'")},o.checkProgramCompatibility=function(r,o,e,m,n){a.json("/program",{cmd:"checkP",programName:r,configuration:o,progXML:e,confXML:m},n,"check program '"+r+"' with configuration '"+o+"'")},o.likeProgram=function(r,o,e,m,n){a.json("/program/like",{programName:o,robotName:m,author:e,like:r},n,"like program '"+o+"': '"+r+"'")},o.resetProgram=function(r){a.json("/projectWorkflow/reset",{},r,"reset")}})); +define(["require","exports","comm"],(function(r,o,e){Object.defineProperty(o,"__esModule",{value:!0}),o.resetProgram=o.likeProgram=o.checkProgramCompatibility=o.compileP=o.compileN=o.runNative=o.runInSim=o.runOnBrick=o.showSourceProgram=o.refreshList=o.loadProgramEntity=o.loadProgramFromListing=o.deleteProgramFromListing=o.deleteShare=o.shareProgramWithGallery=o.shareProgram=o.exportAllProgramsXml=o.loadProgramFromXML=o.saveProgramToServer=o.saveAsProgramToServer=o.externAPIRequest=o.stopProgram=void 0,o.saveAsProgramToServer=function(r,o,a,n,m,t,g){e.json("/program/save",{cmd:"saveAs",programName:r,ownerAccount:o,progXML:a,configName:n,confXML:m,timestamp:t},g,"save program to server with new name '"+r+"'")},o.saveProgramToServer=function(r,o,a,n,m,t,g){e.json("/program/save",{cmd:"save",programName:r,ownerAccount:o,progXML:a,configName:n,confXML:m,timestamp:t},g,"save program '"+r+"' to server")},o.loadProgramFromXML=function(r,o,a){e.json("/program/import",{programName:r,progXML:o},a,"open program '"+r+"' from XML")},o.exportAllProgramsXml=function(){e.download("/program/exportAllPrograms")},o.shareProgram=function(r,o,a){e.json("/program/share",{cmd:"shareP",programName:r,shareData:o},a,"share program '"+r+"' with '"+o.label+"'("+o.type+") having right '"+o.right+"'")},o.shareProgramWithGallery=function(r,o){e.json("/program/share/create",{cmd:"shareWithGallery",programName:r},o,"share program '"+r+"' with Gallery")},o.deleteShare=function(r,o,a,n){e.json("/program/share/delete",{cmd:"shareDelete",programName:r,owner:o,author:a},(function(o){n(o,r)}),"delete share program '"+r+"' owner: "+o)},o.deleteProgramFromListing=function(r,o,a){e.json("/program/delete",{programName:r,author:o},(function(o){a(o,r)}),"delete program '"+r+"'")},o.loadProgramFromListing=function(r,o,a,n){e.json("/program/listing",{programName:r,owner:o,author:a},n,"load program '"+r+"' owned by '"+o+"'")},o.loadProgramEntity=function(r,o,a,n){e.json("/program/entity",{programName:r,owner:a,author:o},n,"load programEntity '"+r+"' owned by '"+a+"'")},o.refreshList=function(r){e.json("/program/listing/names",{},r,"refresh program list")},o.showSourceProgram=function(r,o,a,n,m,t,g,i){e.json("/projectWorkflow/source",{programName:r,configurationName:o,progXML:a,confXML:n,SSID:m,password:t,language:g},i,"show source code of program '"+r+"'")},o.runOnBrick=function(r,o,a,n,m,t,g,i){e.json("/projectWorkflow/run",{programName:r,configurationName:o,progXML:a,confXML:n,SSID:m,password:t,language:g},i,"run program '"+r+"' with configuration '"+o+"'")},o.stopProgram=function(r){e.json("/projectWorkflow/stop",{},r,"stop program ")},o.runInSim=function(r,o,a,n,m,t){e.json("/projectWorkflow/sourceSimulation",{programName:r,configurationName:o,progXML:a,confXML:n,language:m},t,"run program '"+r+"' with configuration '"+o+"'")},o.runNative=function(r,o,a,n){e.json("/projectWorkflow/runNative",{programName:r,progXML:o,language:a},n,"run program '"+r+"'")},o.compileN=function(r,o,a,n){e.json("/projectWorkflow/compileNative",{programName:r,progXML:o,language:a},n,"compile program '"+r+"'")},o.compileP=function(r,o,a,n){e.json("/projectWorkflow/compileProgram",{cmd:"compileP",programName:r,progXML:o,language:a},n,"compile program '"+r+"'")},o.checkProgramCompatibility=function(r,o,a,n,m){e.json("/program",{cmd:"checkP",programName:r,configuration:o,progXML:a,confXML:n},m,"check program '"+r+"' with configuration '"+o+"'")},o.likeProgram=function(r,o,a,n,m){e.json("/program/like",{programName:o,robotName:n,author:a,like:r},m,"like program '"+o+"': '"+r+"'")},o.resetProgram=function(r){e.json("/projectWorkflow/reset",{},r,"reset")},o.externAPIRequest=function(r,o,a,n){e.externPost(r,o,a,n)}})); //# sourceMappingURL=program.model.js.map //# sourceMappingURL=program.model.js.map diff --git a/OpenRobertaServer/staticResources/js/helper/comm.js b/OpenRobertaServer/staticResources/js/helper/comm.js index fc75ebdebd..924575a094 100644 --- a/OpenRobertaServer/staticResources/js/helper/comm.js +++ b/OpenRobertaServer/staticResources/js/helper/comm.js @@ -1,3 +1,3 @@ -define(["require","exports","jquery","wrap","log"],(function(e,r,o,n,t){Object.defineProperty(r,"__esModule",{value:!0}),r.showServerError=r.sendProgramHexToAgent=r.listRobotsFromAgent=r.ping=r.xml=r.download=r.json=r.get=r.setErrorFn=r.setInitToken=r.errorNum=r.onNotificationsAvailableCallback=void 0;var a,i="/rest",s=void 0,u=!0;function c(e){alert("The COMM (default) errorfn is called."),t.info("The COMM (default) errorfn is called. Data follows"),t.error(e),l()}function d(e,r,a,d){var l={log:t.reportToComm(),data:r,initToken:s};return o.ajax({url:i+e,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(l),success:n.wrapREST((function(e){void 0!==e&&void 0!==e.message&&"ORA_INIT_FAIL_INVALID_INIT_TOKEN"===e.message?(u=!1,p("INIT_TOKEN")):a(e)}),d),error:n.wrapErrorFn(c)})}function l(e){if(u){return d("/ping",{},(function(r){void 0!==r&&"error"===r.rc&&"ORA_INIT_FAIL_PING_ERROR"===r.cause&&"invalid-token"===r.initToken&&(u=!1),void 0!==e&&(e(r),a&&r.notificationsAvailable&&a())}))}}function p(e){var r;switch(e+=navigator.language.indexOf("de")>-1?"_DE":"_EN"){case"INIT_TOKEN_DE":r="Dieser Browsertab ist nicht mehr gültig, weil Deine Browser-Session abgelaufen ist oder der Openroberta-Server neu gestartet wurde.\n\nDu kannst dein Programm zwar noch verändern oder exportieren, aber nicht mehr übersetzen oder auf dein Gerät übertragen. Bitte lade diese Seite neu indem du auf »Aktualisieren« ↻ klickst!";break;case"INIT_TOKEN_EN":r="This browser tab is not valid anymore, because your browser session expired or the openroberta server was restarted.\n\nYou may edit or export your program, but it is impossible to compile or send it to your device. Please click on the »Refresh« ↻ button!";break;case"CONNECTION_DE":r="Deine Verbindung zum Open Roberta Server ist langsam oder unterbrochen. Du kannst dein Programm exportieren, um es zu sichern.";break;case"CONNECTION_EN":r="Your connection to the Open Roberta Server is slow or broken. To avoid data loss you may export your program.";break;case"FRONTEND_DE":r="Dein Browser hat ein ungültiges Kommando geschickt. Eventuell ist auch der Openroberta-Server neu gestartet worden. \n\nDu kannst dein Programm zwar noch verändern oder exportieren, aber nicht mehr übersetzen oder auf dein Gerät übertragen.\n\nBitte lösche vorsichtshalber den Browser-Cache!";break;case"FRONTEND_EN":r="Your browser has sent an invalid command. Maybe that the openroberta server was restarted.\n\nYou may edit or export your program, but it is impossible to compile or send it to your device.\n\nAs a precaution please clear your browser cache!";break;default:r="Connection error! Please clear your browser cache!"}alert(r)}r.onNotificationsAvailableCallback=function(e){a=e},r.errorNum=0,r.setInitToken=function(e){void 0===s||void 0===e?s=e:window.close()},r.setErrorFn=function(e){c=e},r.get=function(e,r,t,a){return o.ajax({url:i+e,type:"GET",dataType:"json",data:r,success:n.wrapREST(t,a),error:n.wrapErrorFn(c)})},r.json=d,r.download=function(e){var r=i+e+"?initToken="+s;window.open(r,"_blank")},r.xml=function(e,r,t,a){return o.ajax({url:i+e,type:"POST",contentType:"text/plain; charset=utf-8",dataType:"json",data:r,success:n.wrapREST(t,a),error:n.wrapErrorFn(c)})},r.ping=l,r.listRobotsFromAgent=function(e,r,n){return o.ajax({type:"GET",url:"http://127.0.0.1:8991/listrobots",error:n,complete:r})},r.sendProgramHexToAgent=function(e,r,t,a,i,s){var u={board:"arduino:avr:uno",port:r,commandline:i,signature:a,hex:e,filename:t+".hex",extra:{auth:{password:null}},wait_for_upload_port:!0,use_1200bps_touch:!0,network:!1,params_verbose:"-v",params_quiet:"-q -q",verbose:!0},d=JSON.stringify(u);return o.ajax({type:"POST",url:"http://127.0.0.1:8991/upload",data:d,contentType:"application/x-www-form-urlencoded; charset=utf-8",dataType:"json",statusCode:{200:function(){n.wrapREST(s,"Upload success")},202:function(){n.wrapREST(s,"Upload success")},400:n.wrapErrorFn(c),403:n.wrapErrorFn(c),404:n.wrapErrorFn(c)},error:function(e){}})},r.showServerError=p})); +define(["require","exports","jquery","wrap","log"],(function(e,r,o,n,t){Object.defineProperty(r,"__esModule",{value:!0}),r.showServerError=r.sendProgramHexToAgent=r.listRobotsFromAgent=r.ping=r.xml=r.download=r.json=r.get=r.setErrorFn=r.setInitToken=r.externPost=r.errorNum=r.onNotificationsAvailableCallback=void 0;var a,i="/rest",s=void 0,u=!0;function c(e){alert("The COMM (default) errorfn is called."),t.info("The COMM (default) errorfn is called. Data follows"),t.error(e),l()}function d(e,r,a,d){var l={log:t.reportToComm(),data:r,initToken:s};return o.ajax({url:i+e,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(l),success:n.wrapREST((function(e){void 0!==e&&void 0!==e.message&&"ORA_INIT_FAIL_INVALID_INIT_TOKEN"===e.message?(u=!1,p("INIT_TOKEN")):a(e)}),d),error:n.wrapErrorFn(c)})}function l(e){if(u){return d("/ping",{},(function(r){void 0!==r&&"error"===r.rc&&"ORA_INIT_FAIL_PING_ERROR"===r.cause&&"invalid-token"===r.initToken&&(u=!1),void 0!==e&&(e(r),a&&r.notificationsAvailable&&a())}))}}function p(e){var r;switch(e+=navigator.language.indexOf("de")>-1?"_DE":"_EN"){case"INIT_TOKEN_DE":r="Dieser Browsertab ist nicht mehr gültig, weil Deine Browser-Session abgelaufen ist oder der Openroberta-Server neu gestartet wurde.\n\nDu kannst dein Programm zwar noch verändern oder exportieren, aber nicht mehr übersetzen oder auf dein Gerät übertragen. Bitte lade diese Seite neu indem du auf »Aktualisieren« ↻ klickst!";break;case"INIT_TOKEN_EN":r="This browser tab is not valid anymore, because your browser session expired or the openroberta server was restarted.\n\nYou may edit or export your program, but it is impossible to compile or send it to your device. Please click on the »Refresh« ↻ button!";break;case"CONNECTION_DE":r="Deine Verbindung zum Open Roberta Server ist langsam oder unterbrochen. Du kannst dein Programm exportieren, um es zu sichern.";break;case"CONNECTION_EN":r="Your connection to the Open Roberta Server is slow or broken. To avoid data loss you may export your program.";break;case"FRONTEND_DE":r="Dein Browser hat ein ungültiges Kommando geschickt. Eventuell ist auch der Openroberta-Server neu gestartet worden. \n\nDu kannst dein Programm zwar noch verändern oder exportieren, aber nicht mehr übersetzen oder auf dein Gerät übertragen.\n\nBitte lösche vorsichtshalber den Browser-Cache!";break;case"FRONTEND_EN":r="Your browser has sent an invalid command. Maybe that the openroberta server was restarted.\n\nYou may edit or export your program, but it is impossible to compile or send it to your device.\n\nAs a precaution please clear your browser cache!";break;default:r="Connection error! Please clear your browser cache!"}alert(r)}r.onNotificationsAvailableCallback=function(e){a=e},r.errorNum=0,r.setInitToken=function(e){void 0===s||void 0===e?s=e:window.close()},r.setErrorFn=function(e){c=e},r.get=function(e,r,t,a){return o.ajax({url:i+e,type:"GET",dataType:"json",data:r,success:n.wrapREST(t,a),error:n.wrapErrorFn(c)})},r.json=d,r.download=function(e){var r=i+e+"?initToken="+s;window.open(r,"_blank")},r.xml=function(e,r,t,a){return o.ajax({url:i+e,type:"POST",contentType:"text/plain; charset=utf-8",dataType:"json",data:r,success:n.wrapREST(t,a),error:n.wrapErrorFn(c)})},r.ping=l,r.listRobotsFromAgent=function(e,r,n){return o.ajax({type:"GET",url:"http://127.0.0.1:8991/listrobots",error:n,complete:r})},r.sendProgramHexToAgent=function(e,r,t,a,i,s){var u={board:"arduino:avr:uno",port:r,commandline:i,signature:a,hex:e,filename:t+".hex",extra:{auth:{password:null}},wait_for_upload_port:!0,use_1200bps_touch:!0,network:!1,params_verbose:"-v",params_quiet:"-q -q",verbose:!0},d=JSON.stringify(u);return o.ajax({type:"POST",url:"http://127.0.0.1:8991/upload",data:d,contentType:"application/x-www-form-urlencoded; charset=utf-8",dataType:"json",statusCode:{200:function(){n.wrapREST(s,"Upload success")},202:function(){n.wrapREST(s,"Upload success")},400:n.wrapErrorFn(c),403:n.wrapErrorFn(c),404:n.wrapErrorFn(c)},error:function(e){}})},r.externPost=function(e,r,t,a){return o.post({url:e,data:r,error:n.wrapREST(a),success:n.wrapREST(t)})},r.showServerError=p})); //# sourceMappingURL=comm.js.map //# sourceMappingURL=comm.js.map diff --git a/OpenRobertaServer/staticResources/js/helper/util.js b/OpenRobertaServer/staticResources/js/helper/util.js index 93f9ac7825..1281025f85 100644 --- a/OpenRobertaServer/staticResources/js/helper/util.js +++ b/OpenRobertaServer/staticResources/js/helper/util.js @@ -1,3 +1,3 @@ -define(["require","exports","message","log","jquery","blockly","interpreter.util","guiState.controller","jquery-validate","bootstrap"],(function(e,t,i,o,n,r,a,s){Object.defineProperty(t,"__esModule",{value:!0}),t.toFixedPrecision=t.closeSimRobotWindow=t.openSimRobotWindow=t.removeLinks=t.annotateBlocks=t.clearAnnotations=t.clearTabAlert=t.alertTab=t.isLocalStorageAvailable=t.countBlocks=t.getHashFrom=t.download=t.getBasename=t.sgn=t.roundUltraSound=t.round=t.response=t.showMsgOnTop=t.showSingleListModal=t.showSingleModal=t.setFocusOnElement=t.checkVisibility=t.calcDataTableHeight=t.formatResultLog=t.parseDate=t.formatDate=t.setObjectProperty=t.getPropertyFromObject=t.isEmpty=t.clone=t.base64decode=t.renameNeuron=t.getAllBlocks=t.getTheStartBlock=t.getRobotGroupsPrettyPrint=t.cleanUri=t.RGBAToHexA=t.addVariableValue=t.extendMouseEvent=t.getWebAudio=t.initMicrophone=t.isWebBleSupported=t.isWebUsbSupported=t.isChromium=t.isEdge=t.isIE=t.checkInCircle=t.isMobile=t.arrayToCsv=t.csvToArray=t.activationDisplayName=t.getLinesFromRectangle=void 0;var l=750;function d(){return r.Workspace.getByContainer("blocklyDiv").getAllBlocks()}t.getLinesFromRectangle=function(e){return[{x1:e.x,x2:e.x,y1:e.y,y2:e.y+e.h},{x1:e.x,x2:e.x+e.w,y1:e.y,y2:e.y},{x1:e.x+e.w,x2:e.x,y1:e.y+e.h,y2:e.y+e.h},{x1:e.x+e.w,x2:e.x+e.w,y1:e.y+e.h,y2:e.y}]},t.getTheStartBlock=function(){for(var e=0,t=r.Workspace.getByContainer("blocklyDiv").getTopBlocks();e=0?(a[s].menuGenerator_[l][0]=t,a[s].menuGenerator_[l][1]=t,a[s].value_===e&&a[s].setValue(t)):(a[s].menuGenerator_.push([t,t]),a[s].arrow_&&a[s].arrow_.replaceChild(document.createTextNode(a[s].sourceBlock_.RTL?r.FieldDropdown.ARROW_CHAR+" ":" "+r.FieldDropdown.ARROW_CHAR),a[s].arrow_.childNodes[0]),a[s].render_())}n.render()}}},t.activationDisplayName={linear:"Linear",relu:"ReLU",tanh:"Tanh",sigmoid:"Sigmoid",bool:"Bool(0,1)"};t.csvToArray=function(e,t,i){return void 0===t&&(t=";"),void 0===i&&(i=!1),e.slice(i?e.indexOf("\n")+1:0).split("\n").filter((function(e){return 0!==e.length})).map((function(e){return e.split(t)}))};t.arrayToCsv=function(e,t){return void 0===t&&(t=";"),e.map((function(e){return e.join(t)})).join("\n")};var c=1,u=[];function g(e){var t="{",i=!1;for(var o in e)i?t+=",":i=!0,t+='"'+o+'":',e.hasOwnProperty(o)&&(e[o].length>100?t+='"'+JSON.stringify(e[o]).substring(1,100)+' ..."':t+=JSON.stringify(e[o]));return t+="}"}function h(e){setTimeout((function(){1==e.is(":visible")&&e.focus()}),800)}function f(e,t){return parseFloat(e.toFixed(t))}function v(e){document.body.removeChild(e.target)}function m(e){n("#"+e).children().remove(".typcn"),n("#"+e).removeClass("blinking")}t.base64decode=function(e){for(var t=atob(e),i=new Array(t.length),o=0;o-1?e(t[i.substring(0,n)],i.substr(n+1),o):null!=o?t[i][o]:t[i]},t.setObjectProperty=function e(t,i,o,n){if(void 0===t)return!1;var r=i.indexOf(".");return r>-1?e(t[i.substring(0,r)],i.substr(r+1),o,n):null!=n?t[i][n]=o:void(t[i]=o)},t.formatDate=function(e){if(e){var t=new Date(e);return("0"+t.getDate()).slice(-2)+"."+("0"+(t.getMonth()+1)).slice(-2)+"."+t.getFullYear()+", "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)}return""},t.parseDate=function(e){if(e){var t=e.split(", ")[0],i=e.split(", ")[1],o=t.split(".")[0],n=t.split(".")[1]-1,r=t.split(".")[2],a=i.split(":")[0],s=i.split(":")[1],l=i.split(":")[2],d=i.split(".")[1];return new Date(r,n,o,a,s,l,d).getTime()}return 0},t.formatResultLog=g,t.calcDataTableHeight=function(){return Math.round(n(window).height()-100)},t.checkVisibility=function(){var e,t,i={hidden:"visibilitychange",webkitHidden:"webkitvisibilitychange",mozHidden:"mozvisibilitychange",msHidden:"msvisibilitychange"};for(e in i)if(e in document){t=i[e];break}return function(i){return i&&document.addEventListener(t,i),!document[e]}},t.setFocusOnElement=h,t.showSingleModal=function(e,t,i,o){e(),n("#single-modal-form").onWrap("submit",(function(e){e.preventDefault(),t()}),"sim start clicked"),n("#single-modal").onWrap("hidden.bs.modal",(function(){n("#single-modal-form").off("submit"),n("#singleModalInput").val(""),n("#single-modal-form").validate().resetForm(),i()}),"sim start clicked"),n("#single-modal-form").removeData("validator"),n("#single-modal-form").validate(o),h(n("#singleModalInput")),n("#single-modal").modal("show")},t.showSingleListModal=function(e,t,i,o){n("#single-modal-list-form").onWrap("submit",(function(e){e.preventDefault(),t()}),"sim start clicked"),n("#single-modal-list").onWrap("hidden.bs.modal",(function(){n("#single-modal-list-form").unbind("submit"),i()}),"sim start clicked"),h(n("#singleModalListInput")),n("#single-modal-list").modal("show")},t.showMsgOnTop=function(e){n("#show-message").find("button").removeAttr("data-bs-dismiss"),n("#show-message").find("button").oneWrap("click",(function(e){n("#show-message").modal("hide"),n("#show-message").find("button").attr("data-bs-dismiss","modal")})),i.displayInformation({rc:"not ok"},"",e)},t.response=function(e){o.info("result from server: "+g(e)),"ok"!=e.rc&&i.displayMessage(e.message,"POPUP","")},t.round=f,t.sgn=function(e){return(e>0)-(e<0)},t.getBasename=function(e){var t=String(e).substring(e.lastIndexOf("/")+1);return-1!=t.lastIndexOf(".")&&(t=t.substring(0,t.lastIndexOf("."))),t},t.download=function(e,t){if("Blob"in window&&null==navigator.userAgent.toLowerCase().match(/iPad|iPhone|Android/i)){var i=new Blob([t],{type:"application/octet-stream"});if("msSaveOrOpenBlob"in navigator)navigator.msSaveOrOpenBlob(i,e);else(o=document.createElement("a")).download=e,o.innerHTML="Download File",o.href=window.URL.createObjectURL(i),o.onclick=v,o.style.display="none",document.body.appendChild(o),setTimeout((function(){o.click()}),0)}else{var o;(o=document.createElement("a")).setAttribute("href","data:text/"+e.substring(e.indexOf(".")+1)+";charset=utf-8,"+encodeURIComponent(t)),o.setAttribute("download",e),o.style.display="none",document.body.appendChild(o),o.onclick=v,setTimeout((function(){o.click()}),0)}},t.getHashFrom=function(e){for(var t=0,i=0;i'),n("#"+e).addClass("blinking")},t.clearTabAlert=m;var p={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};String.prototype.escapeHTML=function(){return String(this).replace(/[&<>"'\/]/g,(function(e){return p[e]}))},n.fn.draggable=function(e){e=n.extend({handle:"",cursor:"move",draggableClass:"draggable",activeHandleClass:"active-handle"},e);var t=null;return(""===e.handle?this:this.find(e.handle)).css("cursor",e.cursor).on("mousedown touchstart",(function(i){var o=i.pageX||i.originalEvent.touches[0].pageX,r=i.pageY||i.originalEvent.touches[0].pageY;""===e.handle?(t=n(this)).addClass(e.draggableClass):(t=n(this).parent()).addClass(e.draggableClass).find(e.handle).addClass(e.activeHandleClass);var a=t.outerHeight(),s=t.outerWidth(),l=t.offset().top+a-r,d=t.offset().left+s-o;n(document).on("mousemove touchmove",(function(i){var o=i.pageX||i.originalEvent.touches[0].pageX,r=i.pageY||i.originalEvent.touches[0].pageY,u=o+d-s,g=r+l-a;if("window"==e.constraint){u>=n(window).width()-19?u=n(window).width()-20:u<=19-t.width()&&(u=18-t.width());g>=n(window).height()-19?g=n(window).height()-20:g<=19-t.height()+92&&(g=18-t.height()+92)}if("x"==e.axis){var h=o+d-s;h=Math.min(h,n("#main-section").width()-24),h=Math.max(h,42);t.offset({top:0,left:h}),n("#blocklyDiv").outerWidth(h),n(".fromRight").css({width:n("#main-section").width()-n("#blocklyDiv").outerWidth()}),c=n("#blocklyDiv").outerWidth()/n("#main-section").width(),n(window).trigger("resize")}else t.offset({top:g,left:u});t.css({right:"auto"})})).on("mouseup touchend",(function(){n(document).off("mousemove touchmove"),null!==t&&(t.removeClass(e.draggableClass),t=null)}))})).on("mouseup touchend",(function(){t&&(""===e.handle?t.removeClass(e.draggableClass):t.removeClass(e.draggableClass).find(e.handle).removeClass(e.activeHandleClass)),t=null})),this};var b=n.fn.addClass;n.fn.addClass=function(){var e=b.apply(this,arguments);return n(this).trigger("classChange"),e};var w,y=n.fn.removeClass;function k(){for(var e=n(".simWindow:visible"),t=0,i=e;t-1}function C(){return null!==navigator.userAgent.toLowerCase().match(/iPad|iPhone/i)}n.fn.removeClass=function(){var e=y.apply(this,arguments);return n(this).trigger("classChange"),e},n.fn.toggleSimPopup=function(e){n(this).is(":hidden")&&n(this).css({top:e.top+n("#header").height()+12,left:e.left}),n(this).animate({opacity:"toggle",top:"toggle"},300),n(this).draggable({constraint:"window"})},n.fn.closeRightView=function(e){if(!n(".fromRight.rightActive").hasClass("shifting")){n(".fromRight.rightActive").addClass("shifting"),n(".blocklyToolboxDiv").css("display","inherit");var t=this;n(".fromRight.rightActive").animate({width:0},{duration:l,start:function(){n(".modal").modal("hide"),n(".rightMenuButton.rightActive").removeClass("rightActive")},step:function(e){n(window).trigger("resize"),t.width(n("#main-section").width()-Math.ceil(e)),c=n("#blocklyDiv").outerWidth()/n("#main-section").outerWidth()},done:function(){t.width(n("#main-section").outerWidth()),c=1,n(".fromRight").width(0),t.removeClass("rightActive"),n(".fromRight.rightActive").removeClass("rightActive"),n("#sliderDiv").hide(),n(window).trigger("resize"),"function"==typeof e&&e(),n(".fromRight").trigger("closed")},always:function(){n(".fromRight.shifting").removeClass("shifting")}})}},n.fn.openRightView=function(e,t,i){if(!n(".fromRight.rightActive").hasClass("shifting")){var o,r,a=n("#blocklyDiv");if(n(window).width()<768?(r=!0,o=a.outerWidth()-52):(r=!1,o=a.outerWidth()*t),a.hasClass("rightActive"))return n(".fromRight.rightActive").removeClass("rightActive"),n(".rightMenuButton.rightActive").removeClass("rightActive"),e.addClass("rightActive"),n(this).addClass("rightActive"),n(window).trigger("resize"),r&&n(".blocklyToolboxDiv").css("display","none"),"function"==typeof i&&i(),n(this).attr("id").startsWith("sim")||k(),void n(".fromRight").trigger("closed");a.addClass("rightActive"),e.addClass("shifting rightActive"),n(this).addClass("rightActive"),n(".fromRight.rightActive").animate({width:o},{duration:l,step:function(e,t){a.outerWidth(n("#main-section").width()-e),c=n("#blocklyDiv").outerWidth()/n("#main-section").width(),n(window).trigger("resize")},done:function(){n("#sliderDiv").show(),a.outerWidth(n("#main-section").width()-n(".fromRight.rightActive").width()),c=n("#blocklyDiv").outerWidth()/n("#main-section").width(),n(window).trigger("resize"),r&&n(".blocklyToolboxDiv").css("display","none"),n("#sliderDiv").css({left:a.outerWidth()}),"function"==typeof i&&i()},always:function(){e.removeClass("shifting")}})}},n(window).on("resize",(function(){var e=n("#main-section").width(),t=e,i=n("#main-section").height(),o=(1-c)*t,a=c*t;!n(".fromRight.rightActive.shifting").length>0?(n(".fromRight.rightActive").length>0&&(n(".fromRight.rightActive").width(o),n("#sliderDiv").css("left",a)),n("#blocklyDiv").outerWidth(a)):a=n("#blocklyDiv").outerWidth(),n("#blocklyDiv")&&(n("#blocklyDiv").outerWidth(a),n("#blocklyDiv").height(i),n(".blocklyToolboxDiv").height(n(".blocklyToolboxDiv").height()-36),a<768?n("#program .blocklyToolboxDiv").addClass("small"):n("#program .blocklyToolboxDiv").removeClass("small")),n("#bricklyDiv")&&(n("#bricklyDiv").width(t),n("#bricklyDiv").height(i),t<768?n("#configuration .blocklyToolboxDiv").addClass("small"):n("#configuration .blocklyToolboxDiv").removeClass("small"));for(var s=0,l=n(".simWindow:visible");s=n(window).width()-20&&n("#"+d.id).css({left:""+n(window).width()-20}),d.offsetTop>=n(window).height()-20&&n("#"+d.id).css({top:""+n(window).height()-20})}var u=e-n("#blocklyDiv").outerWidth()-o;0!=u&&n("#blocklyDiv").outerWidth(a+u);var g=r.getMainWorkspace();g&&r.svgResize(g)})),t.clearAnnotations=function(e){if(e&&e instanceof r.Workspace)for(var t=e.getAllBlocks(),i=0;i-1||i>-1},t.isEdge=function(){return window.navigator.userAgent.indexOf("Edge")>-1},t.isChromium=A,t.isWebUsbSupported=function(){return A()&&!C()},t.isWebBleSupported=function(){return A()&&!C()},t.initMicrophone=function(e){navigator.mediaDevices.getUserMedia=navigator.mediaDevices.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia;try{navigator.mediaDevices.getUserMedia({audio:{mandatory:{googEchoCancellation:"false",googAutoGainControl:"false",googNoiseSuppression:"false",googHighpassFilter:"false"},optional:[]}}).then((function(t){var i=e.webAudio.context.createMediaStreamSource(t);e.sound=Volume.createAudioMeter(e.webAudio.context),i.connect(e.sound)}),(function(){console.log("Sorry, but there is no microphone available on your system")}))}catch(e){console.log("Sorry, but there is no microphone available on your system")}},t.getWebAudio=function(){if(!w){w={};var e=window.AudioContext||window.webkitAudioContext||!1;e?w.context=new e:(w.context=null,w.oscillator=null,console.log("Sorry, but the Web Audio API is not supported by your browser. Please, consider upgrading to the latest version or downloading Google Chrome or Mozilla Firefox"))}return w},t.extendMouseEvent=function(e,t,i){var o=e.clientX||e.originalEvent.touches[0].pageX,n=e.clientY||e.originalEvent.touches[0].pageY,r=i.offset().top,a=i.offset().left;e.startX=(o-a)/t,e.startY=(n-r)/t},t.toFixedPrecision=function(e,t){var i=Math.pow(10,t||0);return String(Math.round(e*i)/i)},t.addVariableValue=function e(t,i,o){if(void 0!==o)switch(typeof o){case"number":t.append("
    "+f(o,2)+"
    ");break;case"string":case"boolean":t.append("
    "+o+"
    ");break;case"object":if(null===o)t.append("
    null
    ");else for(var n=0;n=0?(a[s].menuGenerator_[l][0]=t,a[s].menuGenerator_[l][1]=t,a[s].value_===e&&a[s].setValue(t)):(a[s].menuGenerator_.push([t,t]),a[s].arrow_&&a[s].arrow_.replaceChild(document.createTextNode(a[s].sourceBlock_.RTL?r.FieldDropdown.ARROW_CHAR+" ":" "+r.FieldDropdown.ARROW_CHAR),a[s].arrow_.childNodes[0]),a[s].render_())}n.render()}}},t.activationDisplayName={linear:"Linear",relu:"ReLU",tanh:"Tanh",sigmoid:"Sigmoid",bool:"Bool(0,1)"};t.csvToArray=function(e,t,i){return void 0===t&&(t=";"),void 0===i&&(i=!1),e.slice(i?e.indexOf("\n")+1:0).split("\n").filter((function(e){return 0!==e.length})).map((function(e){return e.split(t)}))};t.arrayToCsv=function(e,t){return void 0===t&&(t=";"),e.map((function(e){return e.join(t)})).join("\n")};var c=1,u=[];function g(e){var t="{",i=!1;for(var o in e)i?t+=",":i=!0,t+='"'+o+'":',e.hasOwnProperty(o)&&(e[o].length>100?t+='"'+JSON.stringify(e[o]).substring(1,100)+' ..."':t+=JSON.stringify(e[o]));return t+="}"}function h(e){setTimeout((function(){1==e.is(":visible")&&e.focus()}),800)}function f(e,t){return parseFloat(e.toFixed(t))}function v(e){document.body.removeChild(e.target)}function m(e){n("#"+e).children().remove(".typcn"),n("#"+e).removeClass("blinking")}t.base64decode=function(e){for(var t=atob(e),i=new Array(t.length),o=0;o-1?e(t[i.substring(0,n)],i.substr(n+1),o):null!=o?t[i][o]:t[i]},t.setObjectProperty=function e(t,i,o,n){if(void 0===t)return!1;var r=i.indexOf(".");return r>-1?e(t[i.substring(0,r)],i.substr(r+1),o,n):null!=n?t[i][n]=o:void(t[i]=o)},t.formatDate=function(e){if(e){var t=new Date(e);return("0"+t.getDate()).slice(-2)+"."+("0"+(t.getMonth()+1)).slice(-2)+"."+t.getFullYear()+", "+("0"+t.getHours()).slice(-2)+":"+("0"+t.getMinutes()).slice(-2)}return""},t.parseDate=function(e){if(e){var t=e.split(", ")[0],i=e.split(", ")[1],o=t.split(".")[0],n=t.split(".")[1]-1,r=t.split(".")[2],a=i.split(":")[0],s=i.split(":")[1],l=i.split(":")[2],d=i.split(".")[1];return new Date(r,n,o,a,s,l,d).getTime()}return 0},t.formatResultLog=g,t.calcDataTableHeight=function(){return Math.round(n(window).height()-100)},t.checkVisibility=function(){var e,t,i={hidden:"visibilitychange",webkitHidden:"webkitvisibilitychange",mozHidden:"mozvisibilitychange",msHidden:"msvisibilitychange"};for(e in i)if(e in document){t=i[e];break}return function(i){return i&&document.addEventListener(t,i),!document[e]}},t.setFocusOnElement=h,t.showSingleModal=function(e,t,i,o){e(),n("#single-modal-form").onWrap("submit",(function(e){e.preventDefault(),t()}),"sim start clicked"),n("#single-modal").onWrap("hidden.bs.modal",(function(){n("#single-modal-form").off("submit"),n("#singleModalInput").val(""),n("#single-modal-form").validate().resetForm(),i()}),"sim start clicked"),n("#single-modal-form").removeData("validator"),n("#single-modal-form").validate(o),h(n("#singleModalInput")),n("#single-modal").modal("show")},t.showSingleListModal=function(e,t,i,o){n("#single-modal-list-form").onWrap("submit",(function(e){e.preventDefault(),t()}),"sim start clicked"),n("#single-modal-list").onWrap("hidden.bs.modal",(function(){n("#single-modal-list-form").unbind("submit"),i()}),"sim start clicked"),h(n("#singleModalListInput")),n("#single-modal-list").modal("show")},t.showMsgOnTop=function(e){n("#show-message").find("button").removeAttr("data-bs-dismiss"),n("#show-message").find("button").oneWrap("click",(function(e){n("#show-message").modal("hide"),n("#show-message").find("button").attr("data-bs-dismiss","modal")})),i.displayInformation({rc:"not ok"},"",e)},t.response=function(e){o.info("result from server: "+g(e)),"ok"!=e.rc&&i.displayMessage(e.message,"POPUP","")},t.round=f,t.sgn=function(e){return(e>0)-(e<0)},t.getBasename=function(e){var t=String(e).substring(e.lastIndexOf("/")+1);return-1!=t.lastIndexOf(".")&&(t=t.substring(0,t.lastIndexOf("."))),t},t.download=function(e,t){if("Blob"in window&&null==navigator.userAgent.toLowerCase().match(/iPad|iPhone|Android/i)){var i=new Blob([t],{type:"application/octet-stream"});if("msSaveOrOpenBlob"in navigator)navigator.msSaveOrOpenBlob(i,e);else(o=document.createElement("a")).download=e,o.innerHTML="Download File",o.href=window.URL.createObjectURL(i),o.onclick=v,o.style.display="none",document.body.appendChild(o),setTimeout((function(){o.click()}),0)}else{var o;(o=document.createElement("a")).setAttribute("href","data:text/"+e.substring(e.indexOf(".")+1)+";charset=utf-8,"+encodeURIComponent(t)),o.setAttribute("download",e),o.style.display="none",document.body.appendChild(o),o.onclick=v,setTimeout((function(){o.click()}),0)}},t.getHashFrom=function(e){for(var t=0,i=0;i'),n("#"+e).addClass("blinking")},t.clearTabAlert=m;var p={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};String.prototype.escapeHTML=function(){return String(this).replace(/[&<>"'\/]/g,(function(e){return p[e]}))},n.fn.draggable=function(e){e=n.extend({handle:"",cursor:"move",draggableClass:"draggable",activeHandleClass:"active-handle"},e);var t=null;return(""===e.handle?this:this.find(e.handle)).css("cursor",e.cursor).on("mousedown touchstart",(function(i){var o=i.pageX||i.originalEvent.touches[0].pageX,r=i.pageY||i.originalEvent.touches[0].pageY;""===e.handle?(t=n(this)).addClass(e.draggableClass):(t=n(this).parent()).addClass(e.draggableClass).find(e.handle).addClass(e.activeHandleClass);var a=t.outerHeight(),s=t.outerWidth(),l=t.offset().top+a-r,d=t.offset().left+s-o;n(document).on("mousemove touchmove",(function(i){var o=i.pageX||i.originalEvent.touches[0].pageX,r=i.pageY||i.originalEvent.touches[0].pageY,u=o+d-s,g=r+l-a;if("window"==e.constraint){u>=n(window).width()-19?u=n(window).width()-20:u<=19-t.width()&&(u=18-t.width());g>=n(window).height()-19?g=n(window).height()-20:g<=19-t.height()+92&&(g=18-t.height()+92)}if("x"==e.axis){var h=o+d-s;h=Math.min(h,n("#main-section").width()-24),h=Math.max(h,42);t.offset({top:0,left:h}),n("#blocklyDiv").outerWidth(h),n(".fromRight").css({width:n("#main-section").width()-n("#blocklyDiv").outerWidth()}),c=n("#blocklyDiv").outerWidth()/n("#main-section").width(),n(window).trigger("resize")}else t.offset({top:g,left:u});t.css({right:"auto"})})).on("mouseup touchend",(function(){n(document).off("mousemove touchmove"),null!==t&&(t.removeClass(e.draggableClass),t=null)}))})).on("mouseup touchend",(function(){t&&(""===e.handle?t.removeClass(e.draggableClass):t.removeClass(e.draggableClass).find(e.handle).removeClass(e.activeHandleClass)),t=null})),this};var b=n.fn.addClass;n.fn.addClass=function(){var e=b.apply(this,arguments);return n(this).trigger("classChange"),e};var w,y=n.fn.removeClass;function k(){for(var e=n(".simWindow:visible"),t=0,i=e;t-1}function C(){return null!==navigator.userAgent.toLowerCase().match(/iPad|iPhone/i)}n.fn.removeClass=function(){var e=y.apply(this,arguments);return n(this).trigger("classChange"),e},n.fn.toggleSimPopup=function(e){n(this).is(":hidden")&&n(this).css({top:e.top+n("#header").height()+12,left:e.left}),n(this).animate({opacity:"toggle",top:"toggle"},300),n(this).draggable({constraint:"window"})},n.fn.closeRightView=function(e){if(!n(".fromRight.rightActive").hasClass("shifting")){n(".fromRight.rightActive").addClass("shifting"),n(".blocklyToolboxDiv").css("display","inherit");var t=this;n(".fromRight.rightActive").animate({width:0},{duration:l,start:function(){n(".modal").modal("hide"),n(".rightMenuButton.rightActive").removeClass("rightActive")},step:function(e){n(window).trigger("resize"),t.width(n("#main-section").width()-Math.ceil(e)),c=n("#blocklyDiv").outerWidth()/n("#main-section").outerWidth()},done:function(){t.width(n("#main-section").outerWidth()),c=1,n(".fromRight").width(0),t.removeClass("rightActive"),n(".fromRight.rightActive").removeClass("rightActive"),n("#sliderDiv").hide(),n(window).trigger("resize"),"function"==typeof e&&e(),n(".fromRight").trigger("closed")},always:function(){n(".fromRight.shifting").removeClass("shifting")}})}},n.fn.openRightView=function(e,t,i){if(!n(".fromRight.rightActive").hasClass("shifting")){var o,r,a=n("#blocklyDiv");if(n(window).width()<768?(r=!0,o=a.outerWidth()-52):(r=!1,o=a.outerWidth()*t),a.hasClass("rightActive"))return n(".fromRight.rightActive").removeClass("rightActive"),n(".rightMenuButton.rightActive").removeClass("rightActive"),e.addClass("rightActive"),n(this).addClass("rightActive"),n(window).trigger("resize"),r&&n(".blocklyToolboxDiv").css("display","none"),"function"==typeof i&&i(),n(this).attr("id").startsWith("sim")||k(),void n(".fromRight").trigger("closed");a.addClass("rightActive"),e.addClass("shifting rightActive"),n(this).addClass("rightActive"),n(".fromRight.rightActive").animate({width:o},{duration:l,step:function(e,t){a.outerWidth(n("#main-section").width()-e),c=n("#blocklyDiv").outerWidth()/n("#main-section").width(),n(window).trigger("resize")},done:function(){n("#sliderDiv").show(),a.outerWidth(n("#main-section").width()-n(".fromRight.rightActive").width()),c=n("#blocklyDiv").outerWidth()/n("#main-section").width(),n(window).trigger("resize"),r&&n(".blocklyToolboxDiv").css("display","none"),n("#sliderDiv").css({left:a.outerWidth()}),"function"==typeof i&&i()},always:function(){e.removeClass("shifting")}})}},n(window).on("resize",(function(){var e=n("#main-section").width(),t=e,i=n("#main-section").height(),o=(1-c)*t,a=c*t;!n(".fromRight.rightActive.shifting").length>0?(n(".fromRight.rightActive").length>0&&(n(".fromRight.rightActive").width(o),n("#sliderDiv").css("left",a)),n("#blocklyDiv").outerWidth(a)):a=n("#blocklyDiv").outerWidth(),n("#blocklyDiv")&&(n("#blocklyDiv").outerWidth(a),n("#blocklyDiv").height(i),n(".blocklyToolboxDiv").height(n(".blocklyToolboxDiv").height()-36),a<768?n("#program .blocklyToolboxDiv").addClass("small"):n("#program .blocklyToolboxDiv").removeClass("small")),n("#bricklyDiv")&&(n("#bricklyDiv").width(t),n("#bricklyDiv").height(i),t<768?n("#configuration .blocklyToolboxDiv").addClass("small"):n("#configuration .blocklyToolboxDiv").removeClass("small"));for(var s=0,l=n(".simWindow:visible");s=n(window).width()-20&&n("#"+d.id).css({left:""+n(window).width()-20}),d.offsetTop>=n(window).height()-20&&n("#"+d.id).css({top:""+n(window).height()-20})}var u=e-n("#blocklyDiv").outerWidth()-o;0!=u&&n("#blocklyDiv").outerWidth(a+u);var g=r.getMainWorkspace();g&&r.svgResize(g)})),t.clearAnnotations=function(e){if(e&&e instanceof r.Workspace)for(var t=e.getAllBlocks(),i=0;i-1||i>-1},t.isEdge=function(){return window.navigator.userAgent.indexOf("Edge")>-1},t.isChromium=A,t.isWindowsOS=function(){return-1!=navigator.userAgent.indexOf("Windows")},t.isChromeOS=function(){return-1!=navigator.userAgent.indexOf("CrOS")},t.isWebUsbSupported=function(){return A()&&!C()},t.isWebBleSupported=function(){return A()&&!C()},t.initMicrophone=function(e){navigator.mediaDevices.getUserMedia=navigator.mediaDevices.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia;try{navigator.mediaDevices.getUserMedia({audio:{mandatory:{googEchoCancellation:"false",googAutoGainControl:"false",googNoiseSuppression:"false",googHighpassFilter:"false"},optional:[]}}).then((function(t){var i=e.webAudio.context.createMediaStreamSource(t);e.sound=Volume.createAudioMeter(e.webAudio.context),i.connect(e.sound)}),(function(){console.log("Sorry, but there is no microphone available on your system")}))}catch(e){console.log("Sorry, but there is no microphone available on your system")}},t.getWebAudio=function(){if(!w){w={};var e=window.AudioContext||window.webkitAudioContext||!1;e?w.context=new e:(w.context=null,w.oscillator=null,console.log("Sorry, but the Web Audio API is not supported by your browser. Please, consider upgrading to the latest version or downloading Google Chrome or Mozilla Firefox"))}return w},t.extendMouseEvent=function(e,t,i){var o=e.clientX||e.originalEvent.touches[0].pageX,n=e.clientY||e.originalEvent.touches[0].pageY,r=i.offset().top,a=i.offset().left;e.startX=(o-a)/t,e.startY=(n-r)/t},t.toFixedPrecision=function(e,t){var i=Math.pow(10,t||0);return String(Math.round(e*i)/i)},t.addVariableValue=function e(t,i,o){if(void 0!==o)switch(typeof o){case"number":t.append("
    "+f(o,2)+"
    ");break;case"string":case"boolean":t.append("
    "+o+"
    ");break;case"object":if(null===o)t.append("
    null
    ");else for(var n=0;n'); - let a = - Blockly.Msg['POPUP_DOWNLOAD_STEP_' + i + '_' + GUISTATE_C.getRobotGroup().toUpperCase()] || - Blockly.Msg['POPUP_DOWNLOAD_STEP_' + i] || - 'POPUP_DOWNLOAD_STEP_' + i; - step.html('' + a + ''); - step.css('opacity', '0'); - $('#download-instructions').append(step); - } - - $('#save-client-compiled-program').oneWrap('shown.bs.modal', function (e) { - $('#download-instructions li').each(function (index) { - $(this) - .delay(750 * index) - .animate( - { - opacity: 1, - }, - 1000 - ); - }); - }); - - $('#save-client-compiled-program').oneWrap('hidden.bs.modal', function (e) { - // @ts-ignore - if (!window.msCrypto) { - audio.pause(); - audio.load(); - } - let textH = $('#popupDownloadHeader').text(); - $('#popupDownloadHeader').text(textH.replace($.trim(GUISTATE_C.getRobotRealName()), '$')); - $('#programLink').remove(); - $('#download-instructions').empty(); - GUISTATE_C.setConnectionState('wait'); - MSG.displayInformation(result, result.message, result.message, GUISTATE_C.getProgramName(), GUISTATE_C.getRobot()); - - //Un-hide the div if it was hidden before - $('#changedDownloadFolder').removeClass('hidden'); - $('#OKButtonModalFooter').removeClass('hidden'); - }); - - $('#save-client-compiled-program').modal('show'); - } - } - - public override terminate(): void { - super.terminate(); - this.clearDownloadModal(); - } - - public setState(): void {} - - /** - * Creates a Play button for an Audio object so that the sound can be played - * and paused/restarted inside the browser: - * - * - */ - createPlayButton(audio: HTMLAudioElement) { - $('#trA').removeClass('hidden'); - let playButton: HTMLButtonElement; - if ('Blob' in window) { - //Create a bootstrap button - playButton = document.createElement('button'); - playButton.setAttribute('type', 'button'); - playButton.setAttribute('class', 'btn btn-primary'); - - let playing: boolean = false; - playButton.onclick = function () { - if (playing == false) { - audio.play(); - playIcon.setAttribute('class', 'typcn typcn-media-stop'); - playing = true; - audio.addEventListener('ended', function () { - $('#save-client-compiled-program').modal('hide'); - }); - } else { - playIcon.setAttribute('class', 'typcn typcn-media-play'); - audio.pause(); - audio.load(); - playing = false; - } - }; - - //Create the play icon inside the button - let playIcon = document.createElement('span'); - playIcon.setAttribute('class', 'typcn typcn-media-play'); - playIcon.setAttribute('style', 'color : black'); - playButton.appendChild(playIcon); - } - - if (playButton) { - let programLinkDiv = document.createElement('div'); - programLinkDiv.setAttribute('id', 'programLink'); - programLinkDiv.setAttribute('style', 'text-align: center;'); - programLinkDiv.appendChild(document.createElement('br')); - programLinkDiv.appendChild(playButton); - playButton.setAttribute('style', 'font-size:36px'); - $('#downloadLink').append(programLinkDiv); - } - } -} - class ThymioDeviceManagerConnection extends AbstractConnection { static readonly URL = 'ws://localhost:8597'; // provide a stop program (see https://github.com/Mobsya/vpl-web/blob/master/thymio/index.js#L197) instead of using a stop function of TDM @@ -1420,12 +1273,148 @@ export class Unowifirev2Connection extends TokenConnection {} //cyberpi export class Mbot2Connection extends TokenConnection {} -//edison -export class EdisonConnection extends AudioConnection {} +export class EdisonConnection extends AbstractPromptConnection { + private static API_URL: string = 'https://api.edisonrobotics.net/'; + private static API_LONG: string = 'ep/wav/long'; + private static API_SHORT: string = 'ep/wav/short'; -//ev3 -export class Ev3Connection extends AudioConnection {} + /** + * Creates the pop-up for robots that play sound inside the browser instead + * of downloading a file (f.e. Edison) This function is very similar to + * runForAutoConnection, but instead of a download link a Play button is + * created. Also, some parts of the autoConnection pop-up are hidden: - the + * "I've changed my download folder" checkbox - the "OK" button in the + * footer + * + * @param result + * the result that is received from the server after sending the + * program to it + */ + + protected run(result: any) { + if (result.rc !== 'ok') { + GUISTATE_C.setConnectionState('wait'); + MSG.displayInformation(result, result.message, result.message, GUISTATE_C.getProgramName(), GUISTATE_C.getRobot()); + } else { + let urlAPI = EdisonConnection.API_URL + EdisonConnection.API_LONG; + if (UTIL.isChromeOS() || UTIL.isWindowsOS()) { + urlAPI = EdisonConnection.API_URL + EdisonConnection.API_SHORT; + } + $('#changedDownloadFolder').addClass('hidden'); + $('#OKButtonModalFooter').addClass('hidden'); + let textH = $('#popupDownloadHeader').text(); + $('#popupDownloadHeader').text(textH.replace('$', GUISTATE_C.getRobotRealName().trim())); + for (let i = 1; Blockly.Msg['POPUP_DOWNLOAD_STEP_' + i]; i++) { + let step = $('
  • '); + let a = + Blockly.Msg['POPUP_DOWNLOAD_STEP_' + i + '_' + GUISTATE_C.getRobotGroup().toUpperCase()] || + Blockly.Msg['POPUP_DOWNLOAD_STEP_' + i] || + 'POPUP_DOWNLOAD_STEP_' + i; + step.html('' + a + ''); + $('#download-instructions').append(step); + } + $('#save-client-compiled-program').oneWrap('hidden.bs.modal', function (e) { + GUISTATE_C.setConnectionState('wait'); + // @ts-ignore + if (audio && !window.msCrypto) { + audio.pause(); + audio.load(); + } + that.clearDownloadModal(); + }); + $('body>.pace').fadeIn(); + let audio: HTMLAudioElement; + let that = this; + + const handleError = function (errorMessage) { + GUISTATE_C.setConnectionState('wait'); + that.clearDownloadModal(); + $('body>.pace').fadeOut(400, function () { + MSG.displayPopupMessage('ORA_PROGRAM_SAVE_AS_ERROR_PROGRAM_EXISTS', errorMessage, 'OK'); + }); + }; + + const onload = function (response) { + try { + if (response.compile == 'true') { + let wavProgram = response.wav; + audio = new Audio(wavProgram); + that.createPlayButton(audio); + $('body>.pace').fadeOut(400, function () { + $('#save-client-compiled-program').modal('show'); + }); + } else { + handleError('Compiler Error:
    ' + response.message); + } + } catch (error) { + handleError('API ' + urlAPI + ' usage error'); + } + }; + const onerror = function (e) { + handleError('Compiler ' + urlAPI + ' not available, please try it again later!'); + }; + PROGRAM.externAPIRequest(urlAPI, result.compiledCode, onload, onerror); + } + } + + /** + * Creates a Play button for an Audio object so that the sound can be played + * and paused/restarted inside the browser: + * + * + */ + createPlayButton(audio: HTMLAudioElement) { + let playButton: HTMLButtonElement; + if ('Blob' in window) { + //Create a bootstrap button + playButton = document.createElement('button'); + playButton.setAttribute('type', 'button'); + playButton.setAttribute('class', 'btn btn-primary'); + + let playing: boolean = false; + playButton.onclick = function () { + if (playing == false) { + audio.play(); + playIcon.setAttribute('class', 'typcn typcn-media-stop'); + playing = true; + audio.addEventListener('ended', function () { + $('#save-client-compiled-program').modal('hide'); + }); + } else { + playIcon.setAttribute('class', 'typcn typcn-media-play'); + audio.pause(); + audio.load(); + playing = false; + } + }; + let playIcon = document.createElement('span'); + playIcon.setAttribute('class', 'typcn typcn-media-play'); + playIcon.setAttribute('style', 'color : #333333'); + playButton.appendChild(playIcon); + } + if (playButton) { + let programLinkDiv = document.createElement('div'); + programLinkDiv.setAttribute('id', 'programLink'); + programLinkDiv.setAttribute('style', 'text-align: center;'); + programLinkDiv.appendChild(document.createElement('br')); + programLinkDiv.appendChild(playButton); + playButton.setAttribute('style', 'font-size:36px'); + $(programLinkDiv).appendTo('#downloadLink'); + } + } + + public setState(): void {} + + public override terminate(): void { + super.terminate(); + this.clearDownloadModal(); + } +} + +//ev3 export class Ev3c4ev3Connection extends AutoConnection {} export class Ev3devConnection extends TokenConnection {} diff --git a/OpenRobertaWeb/src/app/roberta/models/program.model.js b/OpenRobertaWeb/src/app/roberta/models/program.model.js index cd019bb52e..2a2d094619 100644 --- a/OpenRobertaWeb/src/app/roberta/models/program.model.js +++ b/OpenRobertaWeb/src/app/roberta/models/program.model.js @@ -445,6 +445,10 @@ function resetProgram(successFn) { COMM.json('/projectWorkflow/reset', {}, successFn, 'reset'); } +export function externAPIRequest(urlAPI, data, successFn, errorFn) { + COMM.externPost(urlAPI, data, successFn, errorFn); +} + export { saveAsProgramToServer, saveProgramToServer, diff --git a/OpenRobertaWeb/src/helper/comm.js b/OpenRobertaWeb/src/helper/comm.js index 300c8b1a11..becde5b4df 100644 --- a/OpenRobertaWeb/src/helper/comm.js +++ b/OpenRobertaWeb/src/helper/comm.js @@ -200,6 +200,15 @@ function sendProgramHexToAgent(programHex, robotPort, programName, signature, co }); } +export function externPost(url, data, successFn, onError) { + return $.post({ + url: url, + data: data, + error: WRAP.wrapREST(onError), + success: WRAP.wrapREST(successFn), + }); +} + function showServerError(type) { type += navigator.language.indexOf('de') > -1 ? '_DE' : '_EN'; var message; diff --git a/OpenRobertaWeb/src/helper/util.js b/OpenRobertaWeb/src/helper/util.js index d6b95f041f..aa47140f1d 100644 --- a/OpenRobertaWeb/src/helper/util.js +++ b/OpenRobertaWeb/src/helper/util.js @@ -1013,6 +1013,14 @@ function isIOS() { return navigator.userAgent.toLowerCase().match(/iPad|iPhone/i) !== null; } +export function isWindowsOS() { + return navigator.userAgent.indexOf('Windows') != -1; +} + +export function isChromeOS() { + return navigator.userAgent.indexOf('CrOS') != -1; +} + export function isWebUsbSupported() { //webUSB is currently only supported by chromium browsers like google chrome, Edge, Microsoft Edge, etc. //webUSB is currently not supported on any IOS device @@ -1185,7 +1193,6 @@ export { showMsgOnTop, response, round, - roundUltraSound, sgn, getBasename, download, diff --git a/RobotEdison/src/main/java/de/fhg/iais/roberta/worker/compile/EdisonCompilerWorker.java b/RobotEdison/src/main/java/de/fhg/iais/roberta/worker/compile/EdisonCompilerWorker.java index ed993a9e18..9d81063bf6 100644 --- a/RobotEdison/src/main/java/de/fhg/iais/roberta/worker/compile/EdisonCompilerWorker.java +++ b/RobotEdison/src/main/java/de/fhg/iais/roberta/worker/compile/EdisonCompilerWorker.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.util.Base64; +import de.fhg.iais.roberta.worker.IWorker; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,59 +26,14 @@ public class EdisonCompilerWorker implements ICompilerWorker { @Override public void execute(Project project) { - String programName = project.getProgramName(); - String robot = project.getRobot(); - Pair workflowResult = this.runBuild(project); - project.setResult(workflowResult.getFirst()); - project.addResultParam("MESSAGE", workflowResult.getSecond()); - if ( workflowResult.getFirst() == Key.COMPILERWORKFLOW_SUCCESS ) { - LOG.info("compile {} program {} successful", robot, programName); + String sourceCode = project.getSourceCode().toString(); + project.setCompiledHex(sourceCode); + if (!sourceCode.isEmpty()) { + LOG.info("compile {} program {} successful", project.getRobot(), project.getProgramName()); + project.setResult(Key.COMPILERWORKFLOW_SUCCESS); } else { - LOG.error("compile {} program {} failed with {}", robot, programName, workflowResult); + LOG.error("compile {} program {} failed with {}", project.getRobot(), project.getProgramName()); + project.setResult(Key.COMPILERWORKFLOW_ERROR_PROGRAM_COMPILE_FAILED); } } - - /** - * Builds the WAV file from the .py source file using the EdPy Python2 compiler (https://github.com/OpenRoberta/EdPy) by starting an external Python2 - * process. The file will be stored as {@link PluginProperties#getTempDir()}/token/source/XXXX.wav as a Base64 String. - * - * @return a Key that gives information about the building process (success, failure, interrupted,...) - */ - private Pair runBuild(Project project) { - final CompilerSetupBean compilerWorkflowBean = project.getWorkerResult(CompilerSetupBean.class); - final String compilerResourcesDir = compilerWorkflowBean.getCompilerResourcesDir(); - final String tempDir = compilerWorkflowBean.getTempDir(); - final String crosscompilerSource = project.getSourceCode().toString(); - Util.storeGeneratedProgram(tempDir, crosscompilerSource, project.getToken(), project.getProgramName(), "." + project.getSourceCodeFileExtension()); - //get all directories - String token = project.getToken(); - String pyFile = project.getProgramName(); - String sourceFilePath = tempDir + "/" + token + "/" + pyFile + "/source/"; - String targetFilePath = tempDir + "/" + token + "/" + pyFile + "/target/"; - - //build and start the Python process - String[] executableWithParameters = - { - "python", - compilerResourcesDir + "EdPy.py", - compilerResourcesDir + "en_lang.json", - sourceFilePath + pyFile + ".py", - "-t", - targetFilePath + pyFile + ".wav" - }; - - Pair result = Util.runCrossCompiler(executableWithParameters, crosscompilerSource, project.isNativeEditorCode()); - Key resultKey = result.getFirst() ? Key.COMPILERWORKFLOW_SUCCESS : Key.COMPILERWORKFLOW_ERROR_PROGRAM_COMPILE_FAILED; - if ( result.getFirst() ) { - try { - byte[] wavBytes = FileUtils.readFileToByteArray(new File(targetFilePath + pyFile + "." + project.getBinaryFileExtension())); - project.setCompiledHex(Base64.getEncoder().encodeToString(wavBytes)); - resultKey = Key.COMPILERWORKFLOW_SUCCESS; - } catch ( IOException e ) { - LOG.error("Compilation successful, but reading WAV file failed (IOException)", e); - resultKey = Key.COMPILERWORKFLOW_ERROR_PROGRAM_COMPILE_FAILED; - } - } - return Pair.of(resultKey, result.getSecond()); - } -} \ No newline at end of file +} diff --git a/RobotEdison/src/main/resources/edison.properties b/RobotEdison/src/main/resources/edison.properties index 2578bb0f82..ea73c8e2a2 100644 --- a/RobotEdison/src/main/resources/edison.properties +++ b/RobotEdison/src/main/resources/edison.properties @@ -1,46 +1,38 @@ -robot.plugin.compiler.resources.dir = RobotEdison/ - -robot.plugin.fileExtension.source = py -robot.plugin.fileExtension.binary = wav - +robot.plugin.compiler.resources.dir=RobotEdison/ +robot.plugin.fileExtension.source=py +robot.plugin.fileExtension.binary=wav # robot specific toolboxes, default program and configuration -robot.program.toolbox.beginner = /edison.program.toolbox.beginner.xml -robot.program.toolbox.expert = /edison.program.toolbox.expert.xml -robot.program.default = /edison.program.default.xml -robot.program.default.nn = /edison.program.default.nn.xml -robot.configuration.toolbox = /edison.configuration.toolbox.xml -robot.configuration.default = /edison.configuration.default.xml - +robot.program.toolbox.beginner=/edison.program.toolbox.beginner.xml +robot.program.toolbox.expert=/edison.program.toolbox.expert.xml +robot.program.default=/edison.program.default.xml +robot.program.default.nn=/edison.program.default.nn.xml +robot.configuration.toolbox=/edison.configuration.toolbox.xml +robot.configuration.default=/edison.configuration.default.xml # robot's long name to display -robot.real.name = Edison -robot.vendor = Microbric - +robot.real.name=Edison +robot.vendor=Microbric # robot's info for further information -robot.info.en = https://meetedison.com/ - +robot.info.en=https://meetedison.com/ #can the robot be configured by the user? (sensors added/removed etc.) -robot.configuration = false +robot.configuration=false # either new or old- with ="S" for all robots but mbot, which needs "P" -robot.configuration.type = old-S -robot.configuration.old.toplevelblock = robBrick_Edison-Brick - +robot.configuration.type=old-S +robot.configuration.old.toplevelblock=robBrick_Edison-Brick #connection type # nn is impossible for this robot -robot.nn = never -robot.nn.activations = linear - -robot.helperMethods = classpath:/helperMethodsEdison.yml -robot.multisim = true -robot.plugin.worker.validate.and.collect = de.fhg.iais.roberta.worker.validate.EdisonValidatorAndCollectorWorker -robot.plugin.worker.validate.and.collect.sim = de.fhg.iais.roberta.worker.validate.EdisonSimValidatorAndCollectorWorker -robot.plugin.worker.generate = de.fhg.iais.roberta.worker.codegen.EdisonPythonGeneratorWorker -robot.plugin.worker.setup = de.fhg.iais.roberta.worker.CompilerSetupWorker -robot.plugin.worker.compile = de.fhg.iais.roberta.worker.compile.EdisonCompilerWorker -robot.plugin.worker.generatesimulation = de.fhg.iais.roberta.worker.codegen.EdisonStackMachineGeneratorWorker - -robot.plugin.workflow.showsource = validate.and.collect,generate -robot.plugin.workflow.compile = validate.and.collect,generate,setup,compile -robot.plugin.workflow.run = validate.and.collect,generate,setup,compile -robot.plugin.workflow.runnative = setup,compile -robot.plugin.workflow.compilenative = setup,compile -robot.plugin.workflow.getsimulationcode = validate.and.collect.sim,generatesimulation \ No newline at end of file +robot.nn=never +robot.nn.activations=linear +robot.helperMethods=classpath:/helperMethodsEdison.yml +robot.multisim=true +robot.plugin.worker.validate.and.collect=de.fhg.iais.roberta.worker.validate.EdisonValidatorAndCollectorWorker +robot.plugin.worker.validate.and.collect.sim=de.fhg.iais.roberta.worker.validate.EdisonSimValidatorAndCollectorWorker +robot.plugin.worker.generate=de.fhg.iais.roberta.worker.codegen.EdisonPythonGeneratorWorker +robot.plugin.worker.setup=de.fhg.iais.roberta.worker.CompilerSetupWorker +robot.plugin.worker.compile=de.fhg.iais.roberta.worker.compile.EdisonCompilerWorker +robot.plugin.worker.generatesimulation=de.fhg.iais.roberta.worker.codegen.EdisonStackMachineGeneratorWorker +robot.plugin.workflow.showsource=validate.and.collect,generate +robot.plugin.workflow.compile=validate.and.collect,generate,setup,compile +robot.plugin.workflow.run=validate.and.collect,generate,setup,compile +robot.plugin.workflow.runnative=setup,compile +robot.plugin.workflow.compilenative=setup,compile +robot.plugin.workflow.getsimulationcode=validate.and.collect.sim,generatesimulation \ No newline at end of file