<snapdata remixID="9090712"><project name='[CHATROOM] SnapRoom' app='Snap! 5.4, http://snap.berkeley.edu' version='1'>
  <notes>Press [SPACE] to chat


This is the very first chatroom on Snap!!
</notes>
  <thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAHyklEQVR4Xu2ZfUxVZRzHvwcRlBQd4HC+UIKoTVvZsCI3UyvHmqvmJB1Bc7M5yJd0MnBrM9bKhW3ZkKmjVWywpKVb2JvS0uZSasofbb7MrqD5QqKC4EURBE57Hrs3UBR/8rsw4ns2dpD7Pd/nns/53HPP8+i4rusCQGVlpdnZLTc3F9nZ2SgqKkJ5ebn9W2Jiot2npaX5c/yFBHpCIC4uDk5XAvaklMeSwP0SoID3S4q5gBC4q4DRBXNQs2xfQAZl6cAlEF0wFzXL9voBiARsWzOj35NzHp6GoNVf9Pvz6K8nMOAFNBdu0KZD/fX69fv3LRawoqICCQkJMBNlcwccn7sboROmor2xHjcvnUfwiCgEDR+JpmO/Y1B4JEJjpuBS4buISn0HDT8Vo/36VUS9sR7n1i/AmOxCXMhbYffnchZi7Pqv8PdHb2L0mi1o/LXUwjWvhz0xG+NydtiM2V/dW4LwF1JshznGsyAaj+QfxOkVzyJm0z64Lc23LozbjmuHy+x4p996BjEf/4yazW/Dbb2JUUtycP3oQdTkraSAfaixWEDzXh3H6SRg0JAwuO1tcIIHI2jwEDSfPYHQ8ZPR2nAZLec9qP3yQ0SmrMOQ+CfRXPkHmv86jqFTZqDxt+8RPncxLm7NREt1JaKW5OByYQ5Gr8r3y2d+Mf9uPLQHI+aloaGsyL9vvXwOw2a+Yo/pKGDzqSMIGRtvBWzzXkHD7i/shyFo6ENo89ZbAcMem4n67z614/IO2HcGPpCAvrdr7oCTdtXhz5cj7nkGwVFjMeypJNT/8Nl9n2n8N5fgeXVUl3kjpLkzam0UUIukvKdHAsqH4xEk0JlAjwT8P8yCOQnp24+EWEDzX3LJycmIjY21k5Dbv4InbDuMU+kJ9qzMBOVsdpL/DM1XcfjsZNTt+KTbs77XV3BXB3d8BjyzZo4d2zcJ8Y0XMm4SQidMs8+A5rn1xonDfAbs9koENiAW0Lydqqoqv4DmQgdHRANtbWi/ecNOQtzWFjjBIf5JSMiYOHuhfZOQmxfPIDhyDFprqzH00afRWP4twqbPRfUHqXbCYZ7vOj7n3W0SEj53kT3GbD4BYwuPoWbzKkS8lumfhDQdOYCwx5/DtcN7OAkJrE/idrGAEydOxLx587Blyxb/Msy9ZsFmGab+x88x4sXUTsswF7dlor3pGkLGT0bEwtW4sCkD0SvzcGXXVox8aekdyzBmueX8e4vssov3l6/tMozvmNuXYcxsvP16Y6dlmOr3X8fozAL/MsyQ+OkYNHIUl2HEyugeIBaw4/B8BtS9GAOxrUcCDkRgPGddAhRQlyfbhAQooBAY47oEKKAuT7YJCVBAITDGdQlQQF2ebBMSoIBCYIzrEqCAujzZJiRAAYXAGNclQAF1ebJNSIACCoExrkuAAuryZJuQAAUUAmNclwAF1OXJNiEBCigExrguAQqoy5NtQgIUUAiMcV0CFFCXJ9uEBCigEBjjugQooC5PtgkJUEAhMMZ1CVBAXZ5sExKggEJgjOsSoIC6PNkmJEABhcAY1yVAAXV5sk1IgAIKgTGuS4AC6vJkm5AABRQCY1yXAAXU5ck2IQEKKATGuC4BCqjLk21CAhRQCIxxXQIUUJcn24QEKKAQGOO6BCigLk+2CQlQQCEwxnUJUEBdnmwTEqCAQmCM6xKggLo82SYkQAGFwBjXJUABdXmyTUiAAgqBMa5LgALq8mSbkAAFFAJjXJcABdTlyTYhAQooBMa4LgEKqMuTbUICFFAIjHFdAhRQlyfbhAQooBAY47oEKKAuT7YJCVBAITDGdQlQQF2ebBMSoIBCYIzrEqCAujzZJiRAAYXAGNclQAF1ebJNSIACCoExrkuAAuryZJuQAAUUAmNclwAF1OXJNiEBCigExrguAQqoy5NtQgIUUAiMcV0CFFCXJ9uEBCigEBjjugQooC5PtgkJUEAhMMZ1CVBAXZ5sExKggEJgjOsSoIC6PNkmJEABhcAY1yVAAXV5sk1IgAIKgTGuS4AC6vJkm5AABRQCY1yXAAXU5ck2IQEKKATGuC4BCqjLk21CAhRQCIxxXQIUUJcn24QEKKAQGOO6BCigLk+2dUPAdV1/wnEcUEAq06sE8vLyYH5Onjxpx6WAvYqfg/kIREREoK6ujgL2lhLmq8d85XADjHxZWVlYt27dgwlYVFSEtLS0Ac9y//79WLp0KTweD+Lj4+1++fLliImJQWJion1t7dq1SE9Pt6yKi4uRmpo6oLn55Nu4ceOD3wEp4C2HjICzZs3yC1VbW4vhw4fD6/Xi6NGjmDp1KiIjI+3rubm5yM7OpnxZWTDy9egOOKApdnPyvjshGd1JwHwIfR9Es3+AZ8C95EoCqgSiC55HzbL/vIqLi4Pj/rtYU1lZqToYy0igOwKdBOwuzNdJIBAE/HfAQJSzkwS6I0ABuyPE1wNKwGlqanJ37tyJpKQkbNiwAVVVVXY5wUyfzToONxIIJAHH6/W6paWlVsCysjIsXryYq/iBJM7uTgSc48ePuxUVFVbA/Px8tLa2Ijw83K7om4VWbiQQSALO9u3b3ebmZsyfP593wECSZneXBJwDBw7YO2BKSgoFpCS9TsDxeDxuSUkJMjIyOAnpdfwckMswdKBPCVDAPsXPwSkgHehTAhSwT/Fz8H8AiJGgAmENl1oAAAAASUVORK5CYII=</thumbnail>
  <stage inheritance='true' id='1' volume='100' height='360' tempo='60' lines='round' width='480' sublistIDs='false' name='Stage' threadsafe='false' codify='false' penlog='false' color='255,255,255,1' scheduled='false' pan='0' ternary='false' costume='0'>
    <pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails>
    <costumes>
      <list id='2' struct='atomic'/>
    </costumes>
    <sounds>
      <list id='3'>
        <item>
          <sound name='Pop' sound='data:audio/ogg;base64,UklGRigCAABXQVZFZm10IBAAAAABAAEAESsAACJWAAACABAAZGF0YQQCAADVAAMDvQdyDe8VUx08I5sk4iCrFnMGVfFf2mDEjbNpqZKo5bFHxUHh8wLtJtFHSmF9byNwCmHOROodKvMPyWqn/ZElje6YObXo3eIMnTpEYHB2tXmiaNhFZxdK5Gy1epLegWuGcZ+OyCH84jB9Xd955H83calNthyp50+4jJYDiWmRT6712VwMADxQX+9vF2lWTgokcfJZxWejtpN4mfiyaNqjCY42a1cpZqJfvEb1H8jyA8r1rc6iH6syxPHqwBSrOShR8VY0SU4rAwQs27667KgOqdG8jN28BjwugEsUWSdSXTmsExzqccWtrSmnurMb0LD2pR56P8hRylFrP30f5/nT1oG+H7ZVvqzVvPUqGIIz9UGEQCwvDBNX8p/Vs8P1v3TLnON6AnogiTaGP9I4OiTDBpLnG86GvwjAFc9R6WsIfiUgOghBtTiWI1MGL+hWzyrC6sJa0QXqSQeUItc10DzsNUojWglH7hvYd8sNy2bWb+qxApIZMyp4MKorPB30CGTzv+G41/bWrN8Q780BKRNcH6gjSB+rE68DUvNw5rrf2+Az6cz2JAbbE/IcSh+EGskPfAHk8jXnDeGG4XroZ/ShAiwQXxoQH4wdXhY9C3T+5/LK6pbnhOng7/n41AIIC0oQkhHZDjcJGQJ5+532lvTd9df5H/+OBJcIFwqKCFUEYf4=' id='4'/>
        </item>
      </list>
    </sounds>
    <variables/>
    <blocks/>
    <scripts>
      <script x='30' y='236'>
        <block s='receiveKey'>
          <l>
            <option>space</option>
          </l>
        </block>
        <block s='doIf'>
          <block var='ready'/>
          <script>
            <block s='doAsk'>
              <l/>
            </block>
            <custom-block s='chat %txt'>
              <block s='getLastAnswer'/>
            </custom-block>
          </script>
        </block>
      </script>
      <script x='30' y='362'>
        <block s='receiveCondition'>
          <block s='reportEquals'>
            <block var='update'>
              <comment collapsed='false' w='165'>Event callled on new chat message</comment>
            </block>
            <l>true</l>
          </block>
        </block>
        <block s='playSound'>
          <l>Pop</l>
        </block>
        <custom-block s='set cloud var %s to %s'>
          <l>update</l>
          <l>false</l>
        </custom-block>
        <block s='doWarp'>
          <script>
            <block s='doAddToList'>
              <block s='reportListItem'>
                <l>
                  <option>last</option>
                </l>
                <block s='reportTextSplit'>
                  <custom-block s='cloud var %s'>
                    <l>chat</l>
                  </custom-block>
                  <l/>
                </block>
              </block>
              <block var='chat'/>
            </block>
            <custom-block s='ignore %s'>
              <custom-block s='post message %s to %s then %s %l'>
                <custom-block s='type %s data %s id %s'>
                  <l>chatUpdated</l>
                  <block s='reportListItem'>
                    <l>
                      <option>last</option>
                    </l>
                    <block var='chat'/>
                  </block>
                  <block s='reportRandom'>
                    <l>1</l>
                    <l>10000000000</l>
                  </block>
                </custom-block>
                <custom-block s='safely try reporting %anyUE then if %upvar report %anyUE'>
                  <block s='evaluate'>
                    <block s='reportJSFunction'>
                      <list/>
                      <l>return window.opener</l>
                    </block>
                    <list/>
                  </block>
                  <l>error</l>
                  <block s='reportBoolean'>
                    <l>
                      <bool>false</bool>
                    </l>
                  </block>
                </custom-block>
                <block s='reifyScript'>
                  <script/>
                  <list/>
                </block>
                <block s='reportNewList'>
                  <list/>
                </block>
              </custom-block>
            </custom-block>
          </script>
        </block>
        <block s='doIf'>
          <block var='tts'/>
          <script>
            <custom-block s='speak %s with %txt accent %br and pitch %n rate %n'>
              <custom-block s='generate tts output for string %txt'>
                <block s='reportListItem'>
                  <l>
                    <option>last</option>
                  </l>
                  <block s='reportTextSplit'>
                    <custom-block s='cloud var %s'>
                      <l>chat</l>
                    </custom-block>
                    <l/>
                  </block>
                </block>
              </custom-block>
              <l>en-US</l>
              <l>1</l>
              <l>1</l>
            </custom-block>
          </script>
        </block>
      </script>
      <script x='291' y='10'>
        <block s='receiveGo'/>
        <custom-block s='cloud ID %s'>
          <l>1357908642</l>
        </custom-block>
        <block s='doDeleteFromList'>
          <l>
            <option>all</option>
          </l>
          <block var='chat'/>
        </block>
        <block s='doSetVar'>
          <l>tts</l>
          <block s='reportBoolean'>
            <l>
              <bool>false</bool>
            </l>
          </block>
        </block>
        <block s='doSetVar'>
          <l>ready</l>
          <block s='reportBoolean'>
            <l>
              <bool>false</bool>
            </l>
          </block>
        </block>
        <block s='doSetVar'>
          <l>ready</l>
          <block s='reportBoolean'>
            <l>
              <bool>true</bool>
            </l>
          </block>
        </block>
        <block s='doWarp'>
          <script>
            <block s='doForEach'>
              <l>item</l>
              <block s='reportTextSplit'>
                <custom-block s='cloud var %s'>
                  <l>chat</l>
                </custom-block>
                <l/>
              </block>
              <script>
                <block s='doIf'>
                  <block var='item'/>
                  <script>
                    <block s='doAddToList'>
                      <block var='item'/>
                      <block var='chat'/>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
        </block>
        <block s='doForever'>
          <script>
            <block s='doSetVar'>
              <l>update</l>
              <custom-block s='cloud var %s'>
                <l>update</l>
              </custom-block>
            </block>
            <block s='doWait'>
              <l>0.1</l>
            </block>
          </script>
        </block>
      </script>
      <script x='28' y='153'>
        <custom-block s='set cloud var %s to %s'>
          <l>chat</l>
          <l/>
        </custom-block>
      </script>
    </scripts>
    <sprites>
      <sprite x='-220' pen='tip' id='155' y='-167' name='Sprite' idx='1' volume='100' rotation='1' scale='2' heading='90' draggable='true' pan='0' color='80,80,80,1' costume='0'>
        <wear>
          <costume center-x='65.9765625' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAICAYAAABNlyniAAACH0lEQVRIS82VMWsUURDH5z+v2jvERtBCbLUzH8AihVysbm+FGGwNQiIhNsJVwoGFCFoYhGhjIygquLdXSDws/AqpEr9BbAPuVW9GBvbJY9k77uQCXrU37/Hm/35v5j/IsmxXVV9S9FPVY2ZeF5HPAK7FawAe5nm+1+12LwL4EdZV9XVRFNvx3vp3mqZrAA5C3PKo6iqAFYur6q2iKL7Z2cz8VkTujUajX3WNYV+apvsAtqI8X8uyvNNutzdV9TGAm3meH2ZZdl1V+2VZ3k+S5EajhnBIJXLXDhqPx79DvNPptFut1idV3TORFm+KzQIQ5yCiXh1YldseoxgOh/0YhHNuQ0S2DZhBqeep9n4B8MAubesGTkTuMvMHe7Q6iCYN+F9AmDgApwDee+9PrCK89zvOuVfxI8wLgojOichlVR045y7FFbE0ECYmlHko76bXWqQ1TBwRDZn5qvf+YwXihXPuiYjcri7znYguhNaw86dVRMgtIj+Z+eRMWiO+YARkLo+Y1hoWn0wmj5Ikea6q+8z81Hv/F0QAbb5gwEKbzgJhQAEMiOgdgJ3gEUutiBhGk5gmzzBos0CYd1TGeEpE6wD6qvom7v9FQJg/9Hq9Z0R0ZNZ25iAqMzL6G8Gw/hVENY0GAK7Y1DCzVNW1YOKLgjBtIrIF4PzSQdRHp1067ttpE2TW+IwrpbrsapgU9TE5z/g0DVYRYcLZf4M5bXz+AUdQVSrZwGgGAAAAAElFTkSuQmCC' center-y='8' name='TTS ENGINE' id='156'/>
        </wear>
        <costumes>
          <list id='157'>
            <item>
              <costume center-x='155' image='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHNuYXA9Imh0dHA6Ly9zbmFwLmJlcmtlbGV5LmVkdS9ydW4iIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgdmlld0JveD0iNjIxLjUgMjg0LjUgMzEwIDk3IiB3aWR0aD0iMzEwIiBoZWlnaHQ9Ijk3Ij48cmVjdCBzdHJva2U9InJnYigwLDAsMCkiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS13aWR0aD0iMyIgZmlsbD0ibm9uZSIgcHJvdG90eXBlPSJWZWN0b3JSZWN0YW5nbGUiIHdpZHRoPSIzMDciIGhlaWdodD0iOTQiIHg9IjYyMyIgeT0iMjg2Ii8+PGxpbmUgc3Ryb2tlPSJyZ2IoMCwwLDApIiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2Utd2lkdGg9IjMiIGZpbGw9Im5vbmUiIHByb3RvdHlwZT0iVmVjdG9yTGluZSIgeDE9IjY4NCIgeTE9IjM1NSIgeDI9IjY4NCIgeTI9IjMxMCIvPjxsaW5lIHN0cm9rZT0icmdiKDAsMCwwKSIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLXdpZHRoPSIzIiBmaWxsPSJub25lIiBwcm90b3R5cGU9IlZlY3RvckxpbmUiIHgxPSI2NjgiIHkxPSIzMTEiIHgyPSI3MDAiIHkyPSIzMTIiLz48bGluZSBzdHJva2U9InJnYigwLDAsMCkiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS13aWR0aD0iMyIgZmlsbD0ibm9uZSIgcHJvdG90eXBlPSJWZWN0b3JMaW5lIiB4MT0iNzQzIiB5MT0iMzQ3IiB4Mj0iNzQyIiB5Mj0iMzA2Ii8+PGxpbmUgc3Ryb2tlPSJyZ2IoMCwwLDApIiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2Utd2lkdGg9IjMiIGZpbGw9Im5vbmUiIHByb3RvdHlwZT0iVmVjdG9yTGluZSIgeDE9IjczMyIgeTE9IjMwOCIgeDI9Ijc2NCIgeTI9IjMwNyIvPjxsaW5lIHN0cm9rZT0icmdiKDAsMCwwKSIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLXdpZHRoPSIzIiBmaWxsPSJub25lIiBwcm90b3R5cGU9IlZlY3RvckxpbmUiIHgxPSI3NDIiIHkxPSIzMjAiIHgyPSI3NDIiIHkyPSIzNTQiLz48bGluZSBzdHJva2U9InJnYigwLDAsMCkiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS13aWR0aD0iMyIgZmlsbD0ibm9uZSIgcHJvdG90eXBlPSJWZWN0b3JMaW5lIiB4MT0iNzM1IiB5MT0iMzA3IiB4Mj0iNzE5IiB5Mj0iMzA4Ii8+PHBhdGggc3Ryb2tlPSJyZ2IoMCwwLDApIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMiIGZpbGw9Im5vbmUiIHByb3RvdHlwZT0iVmVjdG9yUG9seWdvbiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNODIzIDMxMCBMIDgyMiAzMDkgTCA4MjAgMzA3IEwgODE4IDMwNiBMIDgxOCAzMDUgTCA4MTcgMzA1IEwgODE2IDMwNCBMIDgxNCAzMDQgTCA4MTIgMzAzIEwgODA5IDMwMyBMIDgwNyAzMDMgTCA4MDYgMzAzIEwgODA1IDMwMyBMIDgwMSAzMDMgTCA3OTkgMzA0IEwgNzk2IDMwNSBMIDc5NSAzMDYgTCA3OTQgMzA3IEwgNzk0IDMwOCBMIDc5MyAzMDkgTCA3OTMgMzEwIEwgNzkzIDMxMiBMIDc5MyAzMTkgTCA3OTMgMzI0IEwgNzkzIDMzMCBMIDc5MyAzMzcgTCA3OTMgMzQxIEwgNzk0IDM0NyBMIDc5NCAzNDggTCA3OTUgMzQ5IEwgNzk3IDM0OSBMIDc5OSAzNDkgTCA4MDAgMzQ5IEwgODA0IDM0OSBMIDgwNyAzNDggTCA4MTEgMzQ1IEwgODE0IDM0NCBMIDgxNyAzNDEgTCA4MjEgMzM4IEwgODIyIDMzNyBMIDgyMyAzMzcgTCA4MjUgMzM3IEwgODI2IDMzNyBMIDgyNyAzMzggTCA4MjcgMzQxIEwgODI3IDM0NCBMIDgyNyAzNDYgTCA4MjcgMzQ4IEwgODI3IDM0OSBMIDgyNyAzNTAgTCA4MjcgMzUxIEwgODI2IDM1MSBMIDgyNSAzNTIgTCA4MjMgMzUyIEwgODE5IDM1MiBMIDgxNSAzNTIgTCA4MTMgMzUyIEwgODA4IDM1MiBMIDgwNiAzNTIgTCA4MDUgMzUyIEwgODAzIDM1MiBMIDc5NSAzNTMgTCA3OTEgMzUzIEwgNzg5IDM1NCBMIDc4NyAzNTQgTCA3ODYgMzU0IEwgNzg1IDM1NCBMIDc4MyAzNTQgTCA3ODIgMzU0Ii8+PC9zdmc+' center-y='48.5' name='costume1' id='158'/>
            </item>
          </list>
        </costumes>
        <sounds>
          <list id='159' struct='atomic'/>
        </sounds>
        <blocks/>
        <variables/>
        <scripts>
          <script x='20' y='20'>
            <block s='receiveInteraction'>
              <l>
                <option>clicked</option>
              </l>
            </block>
            <block s='doSetVar'>
              <l>tts</l>
              <block s='reportNot'>
                <block var='tts'/>
              </block>
            </block>
          </script>
          <script x='20' y='98'>
            <block s='receiveGo'/>
            <block s='doSwitchToCostume'>
              <custom-block s='costume from text %s size %n'>
                <l>TTS ENGINE</l>
                <l>12</l>
              </custom-block>
            </block>
          </script>
          <script x='204' y='312'>
            <block s='receiveKey'>
              <l>
                <option>c</option>
              </l>
            </block>
            <block s='doSayFor'>
              <block s='reportJoinWords'>
                <list>
                  <l>Latest message: "</l>
                  <custom-block s='cloud var %s'>
                    <l>chat</l>
                  </custom-block>
                  <l>"</l>
                </list>
              </block>
              <l>9</l>
            </block>
          </script>
          <script x='157' y='410'>
            <custom-block s='set cloud var %s to %s'>
              <l>chat</l>
              <l/>
            </custom-block>
          </script>
          <script x='104.4326181875' y='509.000002'>
            <block s='reportListItem'>
              <l>1</l>
              <l/>
            </block>
          </script>
        </scripts>
      </sprite>
      <watcher x='10' color='243,118,29' style='normal' hidden='true' y='10' var='username'/>
      <watcher x='64' color='243,118,29' style='normal' hidden='true' y='141.000002' var='ready'/>
      <watcher x='10' color='243,118,29' style='normal' hidden='true' y='31.000001999999995' var='update'/>
      <watcher x='10' color='243,118,29' style='normal' hidden='true' y='52.00000399999999' var='tts'/>
      <watcher var='chat' x='6' color='243,118,29' style='normal' y='-8' extX='447' extY='308'/>
    </sprites>
  </stage>
  <hidden/>
  <headers/>
  <code/>
  <blocks>
    <block-definition s='substr %&apos;s&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>answer</l>
              </list>
              <l> return answer.substring(0, answer.length - 1);</l>
            </block>
            <list>
              <block var='s'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='set cloud var %&apos;cloud&apos; to %&apos;value&apos;' category='sensing' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
        <input type='%s'/>
      </inputs>
      <script>
        <custom-block s='ignore %s'>
          <block s='reportURL'>
            <block s='reportJoinWords'>
              <list>
                <l>snapextensions.uni-goettingen.de/handleTextfile.php?type=write&amp;content=</l>
                <block var='value'/>
                <l>&amp;filename=./textfiles/</l>
                <block s='reportJoinWords'>
                  <list>
                    <block var='cloud'/>
                    <l>_id_</l>
                    <custom-block s='cloud ID'/>
                  </list>
                </block>
                <l>.txt</l>
              </list>
            </block>
          </block>
        </custom-block>
      </script>
    </block-definition>
    <block-definition category='control' s='ignore %&apos;s&apos;' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
    </block-definition>
    <block-definition s='cloud var %&apos;s&apos;' category='sensing' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <custom-block s='substr %s'>
            <block s='reportURL'>
              <block s='reportJoinWords'>
                <list>
                  <l>snapextensions.uni-goettingen.de/handleTextfile.php?type=read&amp;filename=./textfiles/</l>
                  <block s='reportJoinWords'>
                    <list>
                      <block var='s'/>
                      <l>_id_</l>
                      <custom-block s='cloud ID'/>
                    </list>
                  </block>
                  <l>.txt</l>
                </list>
              </block>
            </block>
          </custom-block>
        </block>
      </script>
    </block-definition>
    <block-definition s='cloud ID %&apos;s&apos;' category='sensing' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportJSFunction'>
            <list>
              <l>a</l>
            </list>
            <l>cloudid = a</l>
          </block>
          <list>
            <block var='s'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='cloud ID' category='sensing' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l/>
              </list>
              <l>return cloudid;</l>
            </block>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='id %&apos;arg&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%n'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block var='arg'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='-- %&apos;n&apos;' category='variables' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input readonly='true' type='%anyUE'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reifyScript'>
            <script>
              <block s='doChangeVar'>
                <l/>
                <l>-1</l>
              </block>
            </script>
            <list/>
          </block>
          <list>
            <block var='n'/>
          </list>
        </block>
        <block s='doReport'>
          <block s='evaluate'>
            <block var='n'/>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='animate setter %&apos;setter&apos; getter %&apos;getter&apos; delta %&apos;delta&apos; over %&apos;duration&apos; secs easing %&apos;easing&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations>de:animiere Setter _ Getter _ Delta _ über _ Sek. beschleunigt _ca:modifica setter _ i getter _ amb delta _ en _ segons de forma _pt:anima com modificador _ e inspector _ de _ em _ s de forma _</translations>
      <inputs>
        <input type='%cmdRing'/>
        <input type='%repRing'/>
        <input type='%n'>50</input>
        <input type='%n'>1</input>
        <input type='%repRing'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>end time</l>
            <l>destination</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>end time</l>
          <block s='reportSum'>
            <block s='reportDate'>
              <l>
                <option>time in milliseconds</option>
              </l>
            </block>
            <block s='reportProduct'>
              <block var='duration'/>
              <l>1000</l>
            </block>
          </block>
        </block>
        <block s='doSetVar'>
          <l>destination</l>
          <block s='reportSum'>
            <block s='evaluate'>
              <block var='getter'/>
              <list/>
            </block>
            <block var='delta'/>
          </block>
        </block>
        <block s='doUntil'>
          <block s='reportGreaterThan'>
            <block s='reportDate'>
              <l>
                <option>time in milliseconds</option>
              </l>
            </block>
            <block var='end time'/>
          </block>
          <script>
            <block s='doRun'>
              <block var='setter'/>
              <list>
                <block s='reportDifference'>
                  <block var='destination'/>
                  <block s='reportProduct'>
                    <block var='delta'/>
                    <block s='evaluate'>
                      <block var='easing'/>
                      <list>
                        <block s='reportQuotient'>
                          <block s='reportDifference'>
                            <block var='end time'/>
                            <block s='reportDate'>
                              <l>
                                <option>time in milliseconds</option>
                              </l>
                            </block>
                          </block>
                          <block s='reportProduct'>
                            <block var='duration'/>
                            <l>1000</l>
                          </block>
                        </block>
                      </list>
                    </block>
                  </block>
                </block>
              </list>
            </block>
          </script>
        </block>
        <block s='doRun'>
          <block var='setter'/>
          <list>
            <block var='destination'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='PI' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <l>3.141592653589793</l>
        </block>
      </script>
    </block-definition>
    <block-definition s='degrees %&apos;radians&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations>de:Grad _ca:graus de _ radianspt:_ radianos em graus</translations>
      <inputs>
        <input type='%n'>0.5</input>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportQuotient'>
            <block s='reportProduct'>
              <block var='radians'/>
              <l>180</l>
            </block>
            <custom-block s='PI'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='error %&apos;msg&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations>de:Fehler _pt:assinala o erro _</translations>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportJSFunction'>
            <list>
              <l>msg</l>
            </list>
            <l>throw new Error(msg)</l>
          </block>
          <list>
            <block var='msg'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='glide %&apos;steps&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos;' category='motion' type='command'>
      <header/>
      <code/>
      <translations>de:gleite _ in _ Sek. beschleunigt: _ca:llisca _ en _ segons de forma _fr:glisser _ en _ sec. accélérer _pt:desliza _ em _ s de forma _</translations>
      <inputs>
        <input type='%n'>50</input>
        <input type='%n'>1</input>
        <input readonly='true' type='%s'>linear                <options>linearquadratic={quadratic-inquadratic-outquadratic-in-out}cubic={cubic-incubic-outcubic-in-out}quart={quart-inquart-outquart-in-out}sinusoidal={sine-insine-outsine-in-out}elastic</options>
        </input>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>destX</l>
            <l>destY</l>
            <l>end time</l>
            <l>deltaX</l>
            <l>deltaY</l>
            <l>func</l>
          </list>
        </block>
        <block s='forward'>
          <block var='steps'/>
        </block>
        <block s='doSetVar'>
          <l>destX</l>
          <block s='xPosition'/>
        </block>
        <block s='doSetVar'>
          <l>destY</l>
          <block s='yPosition'/>
        </block>
        <block s='forward'>
          <block s='reportProduct'>
            <block var='steps'/>
            <l>-1</l>
          </block>
        </block>
        <block s='doSetVar'>
          <l>end time</l>
          <block s='reportSum'>
            <block s='reportDate'>
              <l>
                <option>time in milliseconds</option>
              </l>
            </block>
            <block s='reportProduct'>
              <block var='duration'/>
              <l>1000</l>
            </block>
          </block>
        </block>
        <block s='doSetVar'>
          <l>deltaX</l>
          <block s='reportDifference'>
            <block var='destX'/>
            <block s='xPosition'/>
          </block>
        </block>
        <block s='doSetVar'>
          <l>deltaY</l>
          <block s='reportDifference'>
            <block var='destY'/>
            <block s='yPosition'/>
          </block>
        </block>
        <block s='doIfElse'>
          <block s='reportIsA'>
            <block var='easing'/>
            <l>
              <option>reporter</option>
            </l>
          </block>
          <script>
            <block s='doSetVar'>
              <l>func</l>
              <block var='easing'/>
            </block>
          </script>
          <script>
            <block s='doSetVar'>
              <l>func</l>
              <custom-block s='easing %txt'>
                <block var='easing'/>
              </custom-block>
            </block>
          </script>
        </block>
        <block s='doUntil'>
          <block s='reportGreaterThan'>
            <block s='reportDate'>
              <l>
                <option>time in milliseconds</option>
              </l>
            </block>
            <block var='end time'/>
          </block>
          <script>
            <block s='setXPosition'>
              <block s='reportDifference'>
                <block var='destX'/>
                <block s='reportProduct'>
                  <block var='deltaX'/>
                  <block s='evaluate'>
                    <block var='func'/>
                    <list>
                      <block s='reportQuotient'>
                        <block s='reportDifference'>
                          <block var='end time'/>
                          <block s='reportDate'>
                            <l>
                              <option>time in milliseconds</option>
                            </l>
                          </block>
                        </block>
                        <block s='reportProduct'>
                          <block var='duration'/>
                          <l>1000</l>
                        </block>
                      </block>
                    </list>
                  </block>
                </block>
              </block>
            </block>
            <block s='setYPosition'>
              <block s='reportDifference'>
                <block var='destY'/>
                <block s='reportProduct'>
                  <block var='deltaY'/>
                  <block s='evaluate'>
                    <block var='func'/>
                    <list>
                      <block s='reportQuotient'>
                        <block s='reportDifference'>
                          <block var='end time'/>
                          <block s='reportDate'>
                            <l>
                              <option>time in milliseconds</option>
                            </l>
                          </block>
                        </block>
                        <block s='reportProduct'>
                          <block var='duration'/>
                          <l>1000</l>
                        </block>
                      </block>
                    </list>
                  </block>
                </block>
              </block>
            </block>
          </script>
        </block>
        <block s='gotoXY'>
          <block var='destX'/>
          <block var='destY'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='animate %&apos;attribute&apos; by %&apos;delta&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos;' category='motion' type='command'>
      <header/>
      <code/>
      <translations>de:animiere _ um _ in _ Sek. beschleunigt: _ca:modifica _ amb _ en _ segons de forma _pt:anima _ de _ em _ s de forma _</translations>
      <inputs>
        <input readonly='true' type='%s'>x position                <options>x positiony positiondirectionsizeghost effectcolor effectsaturation effectbrightness effectfisheye effectwhirl effectpixelate effectmosaic effectnegative effecttempovolumebalance</options>
        </input>
        <input type='%n'>50</input>
        <input type='%n'>1</input>
        <input readonly='true' type='%s'>linear                <options>linearquadratic={quadratic-inquadratic-outquadratic-in-out}cubic={cubic-incubic-outcubic-in-out}quart={quart-inquart-outquart-in-out}sinusoidal={sine-insine-outsine-in-out}elastic</options>
        </input>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>accessors</l>
            <l>func</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>accessors</l>
          <block s='reportIfElse'>
            <block s='reportEquals'>
              <block var='attribute'/>
              <l>x position</l>
            </block>
            <block s='reportNewList'>
              <list>
                <block s='reifyScript'>
                  <script>
                    <block s='setXPosition'>
                      <l/>
                    </block>
                  </script>
                  <list/>
                </block>
                <block s='reifyReporter'>
                  <autolambda>
                    <block s='xPosition'/>
                  </autolambda>
                  <list/>
                </block>
              </list>
            </block>
            <block s='reportIfElse'>
              <block s='reportEquals'>
                <block var='attribute'/>
                <l>y position</l>
              </block>
              <block s='reportNewList'>
                <list>
                  <block s='reifyScript'>
                    <script>
                      <block s='setYPosition'>
                        <l/>
                      </block>
                    </script>
                    <list/>
                  </block>
                  <block s='reifyReporter'>
                    <autolambda>
                      <block s='yPosition'/>
                    </autolambda>
                    <list/>
                  </block>
                </list>
              </block>
              <block s='reportIfElse'>
                <block s='reportEquals'>
                  <block var='attribute'/>
                  <l>direction</l>
                </block>
                <block s='reportNewList'>
                  <list>
                    <block s='reifyScript'>
                      <script>
                        <block s='setHeading'>
                          <l/>
                        </block>
                      </script>
                      <list/>
                    </block>
                    <block s='reifyReporter'>
                      <autolambda>
                        <block s='direction'/>
                      </autolambda>
                      <list/>
                    </block>
                  </list>
                </block>
                <block s='reportIfElse'>
                  <block s='reportEquals'>
                    <block var='attribute'/>
                    <l>size</l>
                  </block>
                  <block s='reportNewList'>
                    <list>
                      <block s='reifyScript'>
                        <script>
                          <block s='setScale'>
                            <l/>
                          </block>
                        </script>
                        <list/>
                      </block>
                      <block s='reifyReporter'>
                        <autolambda>
                          <block s='getScale'/>
                        </autolambda>
                        <list/>
                      </block>
                    </list>
                  </block>
                  <block s='reportIfElse'>
                    <block s='reportEquals'>
                      <block var='attribute'/>
                      <l>tempo</l>
                    </block>
                    <block s='reportNewList'>
                      <list>
                        <block s='reifyScript'>
                          <script>
                            <block s='doSetTempo'>
                              <l/>
                            </block>
                          </script>
                          <list/>
                        </block>
                        <block s='reifyReporter'>
                          <autolambda>
                            <block s='getTempo'/>
                          </autolambda>
                          <list/>
                        </block>
                      </list>
                    </block>
                    <block s='reportIfElse'>
                      <block s='reportEquals'>
                        <block var='attribute'/>
                        <l>volume</l>
                      </block>
                      <block s='reportNewList'>
                        <list>
                          <block s='reifyScript'>
                            <script>
                              <block s='setVolume'>
                                <l/>
                              </block>
                            </script>
                            <list/>
                          </block>
                          <block s='reifyReporter'>
                            <autolambda>
                              <block s='getVolume'/>
                            </autolambda>
                            <list/>
                          </block>
                        </list>
                      </block>
                      <block s='reportIfElse'>
                        <block s='reportEquals'>
                          <block var='attribute'/>
                          <l>balance</l>
                        </block>
                        <block s='reportNewList'>
                          <list>
                            <block s='reifyScript'>
                              <script>
                                <block s='setPan'>
                                  <l/>
                                </block>
                              </script>
                              <list/>
                            </block>
                            <block s='reifyReporter'>
                              <autolambda>
                                <block s='getPan'/>
                              </autolambda>
                              <list/>
                            </block>
                          </list>
                        </block>
                        <block s='reportNewList'>
                          <list>
                            <block s='reifyScript'>
                              <script>
                                <block s='setEffect'>
                                  <block s='reportListItem'>
                                    <l>1</l>
                                    <block s='reportTextSplit'>
                                      <block var='attribute'/>
                                      <l/>
                                    </block>
                                  </block>
                                  <l/>
                                </block>
                              </script>
                              <list/>
                            </block>
                            <block s='reifyReporter'>
                              <autolambda>
                                <block s='getEffect'>
                                  <block s='reportListItem'>
                                    <l>1</l>
                                    <block s='reportTextSplit'>
                                      <block var='attribute'/>
                                      <l/>
                                    </block>
                                  </block>
                                </block>
                              </autolambda>
                              <list/>
                            </block>
                          </list>
                        </block>
                      </block>
                    </block>
                  </block>
                </block>
              </block>
            </block>
          </block>
        </block>
        <block s='doIfElse'>
          <block s='reportIsA'>
            <block var='easing'/>
            <l>
              <option>reporter</option>
            </l>
          </block>
          <script>
            <block s='doSetVar'>
              <l>func</l>
              <block var='easing'/>
            </block>
          </script>
          <script>
            <block s='doSetVar'>
              <l>func</l>
              <custom-block s='easing %txt'>
                <block var='easing'/>
              </custom-block>
            </block>
          </script>
        </block>
        <custom-block s='animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing'>
          <block s='reportListItem'>
            <l>1</l>
            <block var='accessors'/>
          </block>
          <block s='reportListItem'>
            <l>2</l>
            <block var='accessors'/>
          </block>
          <block var='delta'/>
          <block var='duration'/>
          <block var='func'/>
        </custom-block>
      </script>
    </block-definition>
    <block-definition s='easing %&apos;choice&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations>de:Beschleunigung _ca:de forma _pt:a forma _</translations>
      <inputs>
        <input readonly='true' type='%txt'>linear                <options>linearquadratic={quadratic-inquadratic-outquadratic-in-out}cubic={cubic-incubic-outcubic-in-out}quart={quart-inquart-outquart-in-out}sinusoidal={sine-insine-outsine-in-out}elastic</options>
        </input>
      </inputs>
      <script>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>linear</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <custom-block s='id %n'>
                    <l/>
                  </custom-block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>quadratic-in</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportProduct'>
                    <l/>
                    <l/>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>quadratic-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportProduct'>
                    <l/>
                    <block s='reportDifference'>
                      <l>2</l>
                      <l/>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>quadratic-in-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportIfElse'>
                    <block s='reportLessThan'>
                      <l/>
                      <l>.5</l>
                    </block>
                    <block s='reportProduct'>
                      <l>2</l>
                      <block s='reportProduct'>
                        <l/>
                        <l/>
                      </block>
                    </block>
                    <block s='reportDifference'>
                      <block s='reportProduct'>
                        <block s='reportDifference'>
                          <l>4</l>
                          <block s='reportProduct'>
                            <l>2</l>
                            <l/>
                          </block>
                        </block>
                        <l/>
                      </block>
                      <l>1</l>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>cubic-in</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportProduct'>
                    <l/>
                    <block s='reportProduct'>
                      <l/>
                      <l/>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>cubic-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportSum'>
                    <block s='reportProduct'>
                      <block s='reportProduct'>
                        <custom-block s='-- %anyUE'>
                          <block var='t'/>
                        </custom-block>
                        <block var='t'/>
                      </block>
                      <block var='t'/>
                    </block>
                    <l>1</l>
                  </block>
                </autolambda>
                <list>
                  <l>t</l>
                </list>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>cubic-in-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportIfElse'>
                    <block s='reportLessThan'>
                      <l/>
                      <l>.5</l>
                    </block>
                    <block s='reportProduct'>
                      <l>4</l>
                      <block s='reportProduct'>
                        <l/>
                        <block s='reportProduct'>
                          <l/>
                          <l/>
                        </block>
                      </block>
                    </block>
                    <block s='reportSum'>
                      <block s='reportProduct'>
                        <block s='reportProduct'>
                          <block s='reportDifference'>
                            <l/>
                            <l>1</l>
                          </block>
                          <block s='reportDifference'>
                            <block s='reportProduct'>
                              <l>2</l>
                              <l/>
                            </block>
                            <l>2</l>
                          </block>
                        </block>
                        <block s='reportDifference'>
                          <block s='reportProduct'>
                            <l>2</l>
                            <l/>
                          </block>
                          <l>2</l>
                        </block>
                      </block>
                      <l>1</l>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>quart-in</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportProduct'>
                    <l/>
                    <block s='reportProduct'>
                      <l/>
                      <block s='reportProduct'>
                        <l/>
                        <l/>
                      </block>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>quart-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportDifference'>
                    <l>1</l>
                    <block s='reportProduct'>
                      <custom-block s='-- %anyUE'>
                        <block var='t'/>
                      </custom-block>
                      <block s='reportProduct'>
                        <block var='t'/>
                        <block s='reportProduct'>
                          <block var='t'/>
                          <block var='t'/>
                        </block>
                      </block>
                    </block>
                  </block>
                </autolambda>
                <list>
                  <l>t</l>
                </list>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>quart-in-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportIfElse'>
                    <block s='reportLessThan'>
                      <l/>
                      <l>.5</l>
                    </block>
                    <block s='reportProduct'>
                      <l>8</l>
                      <block s='reportProduct'>
                        <l/>
                        <block s='reportProduct'>
                          <l/>
                          <block s='reportProduct'>
                            <l/>
                            <l/>
                          </block>
                        </block>
                      </block>
                    </block>
                    <block s='evaluate'>
                      <block s='reifyReporter'>
                        <autolambda>
                          <block s='reportDifference'>
                            <l>1</l>
                            <block s='reportProduct'>
                              <l>8</l>
                              <block s='reportProduct'>
                                <custom-block s='-- %anyUE'>
                                  <block var='t'/>
                                </custom-block>
                                <block s='reportProduct'>
                                  <block var='t'/>
                                  <block s='reportProduct'>
                                    <block var='t'/>
                                    <block var='t'/>
                                  </block>
                                </block>
                              </block>
                            </block>
                          </block>
                        </autolambda>
                        <list>
                          <l>t</l>
                        </list>
                      </block>
                      <list>
                        <l/>
                      </list>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>sine-in</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportDifference'>
                    <l>1</l>
                    <block s='reportMonadic'>
                      <l>
                        <option>sin</option>
                      </l>
                      <block s='reportSum'>
                        <l>90</l>
                        <block s='reportProduct'>
                          <l/>
                          <l>90</l>
                        </block>
                      </block>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>sine-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportMonadic'>
                    <l>
                      <option>sin</option>
                    </l>
                    <block s='reportProduct'>
                      <l/>
                      <l>90</l>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>sine-in-out</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyReporter'>
                <autolambda>
                  <block s='reportDifference'>
                    <l>1</l>
                    <block s='reportMonadic'>
                      <l>
                        <option>cos</option>
                      </l>
                      <block s='reportProduct'>
                        <l/>
                        <l>90</l>
                      </block>
                    </block>
                  </block>
                </autolambda>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <block s='doIf'>
          <block s='reportEquals'>
            <block var='choice'/>
            <l>elastic</l>
          </block>
          <script>
            <block s='doReport'>
              <block s='reifyScript'>
                <script>
                  <block s='doDeclareVariables'>
                    <list>
                      <l>p</l>
                    </list>
                  </block>
                  <block s='doSetVar'>
                    <l>p</l>
                    <l>0.3</l>
                  </block>
                  <block s='doReport'>
                    <block s='reportSum'>
                      <block s='reportProduct'>
                        <block s='reportPower'>
                          <l>2</l>
                          <block s='reportProduct'>
                            <l>-10</l>
                            <l/>
                          </block>
                        </block>
                        <block s='reportMonadic'>
                          <l>
                            <option>sin</option>
                          </l>
                          <custom-block s='degrees %n'>
                            <block s='reportProduct'>
                              <block s='reportDifference'>
                                <l/>
                                <block s='reportQuotient'>
                                  <block var='p'/>
                                  <l>4</l>
                                </block>
                              </block>
                              <block s='reportQuotient'>
                                <block s='reportProduct'>
                                  <l>2</l>
                                  <custom-block s='PI'/>
                                </block>
                                <block var='p'/>
                              </block>
                            </block>
                          </custom-block>
                        </block>
                      </block>
                      <l>1</l>
                    </block>
                  </block>
                </script>
                <list/>
              </block>
            </block>
          </script>
        </block>
        <custom-block s='error %s'>
          <block s='reportJoinWords'>
            <list>
              <l>unknown easing function "</l>
              <block var='choice'/>
              <l>"</l>
            </list>
          </block>
        </custom-block>
      </script>
    </block-definition>
    <block-definition s='for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; $nl in %&apos;time&apos; secs easing %&apos;easing&apos; %&apos;action&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations>de:für _ = _ bis _ _ in _ Sek. beschleunigt: _ _ca:per _ = _ fins _ _ en _ segons de forma _ _pt:para _ de _ a _ _ em _ s de forma _ _</translations>
      <inputs>
        <input type='%upvar'/>
        <input type='%n'>0</input>
        <input type='%n'>100</input>
        <input type='%n'>1</input>
        <input readonly='true' type='%txt'>linear                <options>linearquadratic={quadratic-inquadratic-outquadratic-in-out}cubic={cubic-incubic-outcubic-in-out}quart={quart-inquart-outquart-in-out}sinusoidal={sine-insine-outsine-in-out}elastic</options>
        </input>
        <input type='%ca'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>i</l>
          <block var='start'/>
        </block>
        <custom-block s='animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing'>
          <block s='reifyScript'>
            <script>
              <block s='doSetVar'>
                <l>i</l>
                <l/>
              </block>
              <block s='doRun'>
                <block var='action'/>
                <list/>
              </block>
            </script>
            <list/>
          </block>
          <block s='reifyReporter'>
            <autolambda>
              <block var='i'/>
            </autolambda>
            <list/>
          </block>
          <block s='reportDifference'>
            <block var='end'/>
            <block var='start'/>
          </block>
          <block var='time'/>
          <block s='reportIfElse'>
            <block s='reportIsA'>
              <block var='easing'/>
              <l>
                <option>reporter</option>
              </l>
            </block>
            <block var='easing'/>
            <custom-block s='easing %txt'>
              <block var='easing'/>
            </custom-block>
          </block>
        </custom-block>
      </script>
    </block-definition>
    <block-definition s='%&apos;method&apos; url: %&apos;url&apos; send: %&apos;payload&apos; headers: %&apos;headers&apos;' category='sensing' type='reporter'>
      <header/>
      <code/>
      <translations>pt:a resposta a _ de _ enviando _ e cabeçalhos _</translations>
      <inputs>
        <input readonly='true' type='%s'>GET                <options>GETPOSTPUTDELETE</options>
        </input>
        <input type='%s'>https://snap.berkeley.edu</input>
        <input type='%s'/>
        <input readonly='true' type='%mult%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>method</l>
                <l>url</l>
                <l>data</l>
                <l>headers</l>
                <l>proc</l>
              </list>
              <l>var response, i, header;if (!proc.httpRequest) {  proc.httpRequest = new XMLHttpRequest();  proc.httpRequest.open(method, url, true);  proc.assertType(headers, &apos;list&apos;);  for (i = 1; i &lt;= headers.length(); i += 1) {    header = headers.at(i);    proc.assertType(header, &apos;list&apos;);    proc.httpRequest.setRequestHeader(      header.at(1),      header.at(2)    );  }  proc.httpRequest.send(data || null);} else if (proc.httpRequest.readyState === 4) {  response = proc.httpRequest.responseText;  proc.httpRequest = null;  return response;}proc.pushContext(&apos;doYield&apos;);proc.pushContext();</l>
            </block>
            <list>
              <block var='method'/>
              <block var='url'/>
              <block var='payload'/>
              <block var='headers'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='key: %&apos;key&apos; value: %&apos;value&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations>pt:um par (chave: _ , valor: _ )</translations>
      <inputs>
        <input type='%s'/>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportNewList'>
            <list>
              <block var='key'/>
              <block var='value'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='current location' category='sensing' type='reporter'>
      <comment x='0' w='200' collapsed='false' y='0'>Reports a three-item list containing the latitude and longitude of the user, and the precision of the measurements.  Works only if the user allows snap.berkeley.edu access to location data.  Some browsers also require an HTTPS connection to Snap!.</comment>
      <header/>
      <code/>
      <translations>pt:a localização actual do dispositivo</translations>
      <inputs/>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>proc</l>
              </list>
              <l>if (!proc.geostarted) {  var geo = navigator.geolocation;  var cords = [];  var options = {    enableHighAccuracy: false,  };  function success(pos) {    console.log(pos);    proc.geocords = [pos.coords.latitude,                     pos.coords.longitude,                     pos.coords.accuracy];  }  function error(err) {    alert("ERROR " + err.code + ": " + err.message);  }  proc.geostarted = true;  proc.geocords = null;  console.log("starting geolocation")  geo.getCurrentPosition(success, error, options);} else if (proc.geocords) {  var cords = proc.geocords;  proc.geostarted = null;  proc.geocords = null;  console.log("returning");  return new List(cords);} else {  console.log("yielding");  proc.pushContext(&apos;doYield&apos;);  proc.pushContext();}</l>
            </block>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='chat %&apos;str&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'>*empty*</input>
      </inputs>
      <script>
        <block s='doIf'>
          <block s='reportNot'>
            <block s='reportEquals'>
              <block var='str'/>
              <l/>
            </block>
          </block>
          <script>
            <custom-block s='set cloud var %s to %s'>
              <l>chat</l>
              <block s='reportJoinWords'>
                <list>
                  <custom-block s='cloud var %s'>
                    <l>chat</l>
                  </custom-block>
                  <l>  [</l>
                  <custom-block s='username'/>
                  <l>]: </l>
                  <block var='str'/>
                </list>
              </block>
            </custom-block>
            <custom-block s='set cloud var %s to %s'>
              <l>update</l>
              <l>true</l>
            </custom-block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='speak %&apos;text&apos; with %&apos;lang&apos; accent $nl and pitch %&apos;pitch&apos; rate %&apos;rate&apos;' category='sound' type='command'>
      <header/>
      <code/>
      <translations>de:sprich _ mit _ Aussprache _ und Höhe _ Geschwindigkeit _pt:fala _ na língua _ _ com tom _ e velocidade _</translations>
      <inputs>
        <input type='%s'>Hello, World!</input>
        <input type='%txt'>en-US<options>العربية=arБългарски=bgবাংলা=bnCatalà=caCatalà - Valencià=ca-VAČesky=csDeutsch=deDansk=dkΕλληνικά=elEnglish-American=en-USEnglish-British=en-GBEsperanto=eoEspañol=esEesti=etEuskara=eusuomi=fiFrançais=frGalego=glHrvatski=hrMagyar=huInterlingua=iaBahasa Indonesia=idItaliano=it日本語=jaにほんご=ja-HIRAಕನ್ನಡ=kn한국어=koMalayalam=mlNederlands=nlNorsk=noPolski=plPortuguês=ptPortuguês do Brasil=pt-BRRomân=roРусский=ruSlovenščina=sisvenska=svTamil=taTelagu=teTürkçe=trУкраїнська=ua简体中文=zh-CN繁體中文=zh-TW</options>
        </input>
        <input type='%n'>1</input>
        <input type='%n'>1</input>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportJSFunction'>
            <list>
              <l>msg</l>
              <l>accent</l>
              <l>pitch</l>
              <l>rate</l>
            </list>
            <l>var utter = new SpeechSynthesisUtterance(msg);utter.lang = accent;utter.pitch = pitch;utter.rate = rate;window.speechSynthesis.speak(utter);</l>
          </block>
          <list>
            <block var='text'/>
            <block var='lang'/>
            <block var='pitch'/>
            <block var='rate'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='speak %&apos;text&apos; with %&apos;lang&apos; accent $nl and pitch %&apos;pitch&apos; rate %&apos;rate&apos; and wait' category='sound' type='command'>
      <header/>
      <code/>
      <translations>de:sprich _ mit _ Aussprache _ und Höhe _ Geschwindigkeit _ und wartept:fala _ na língua _ _ com tom _ e velocidade _ , e espera</translations>
      <inputs>
        <input type='%s'>Hello, World!</input>
        <input type='%txt'>en-US<options>العربية=arБългарски=bgবাংলা=bnCatalà=caCatalà - Valencià=ca-VAČesky=csDeutsch=deDansk=dkΕλληνικά=elEnglish-American=en-USEnglish-British=en-GBEsperanto=eoEspañol=esEesti=etEuskara=eusuomi=fiFrançais=frGalego=glHrvatski=hrMagyar=huInterlingua=iaBahasa Indonesia=idItaliano=it日本語=jaにほんご=ja-HIRAಕನ್ನಡ=kn한국어=koMalayalam=mlNederlands=nlNorsk=noPolski=plPortuguês=ptPortuguês do Brasil=pt-BRRomân=roРусский=ruSlovenščina=sisvenska=svTamil=taTelagu=teTürkçe=trУкраїнська=ua简体中文=zh-CN繁體中文=zh-TW</options>
        </input>
        <input type='%n'>1</input>
        <input type='%n'>1</input>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>test</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>test</l>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>msg</l>
                <l>accent</l>
                <l>pitch</l>
                <l>rate</l>
              </list>
              <l>var utter = new SpeechSynthesisUtterance(msg),    isDone = false;utter.lang = accent;utter.pitch = pitch;utter.rate = rate;utter.onend = function () {isDone = true; };window.speechSynthesis.speak(utter);return function () {return isDone; };</l>
            </block>
            <list>
              <block var='text'/>
              <block var='lang'/>
              <block var='pitch'/>
              <block var='rate'/>
            </list>
          </block>
        </block>
        <block s='doWaitUntil'>
          <block s='evaluate'>
            <block var='test'/>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='username' category='sensing' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l/>
              </list>
              <l>var ide = this.parentThatIsA(IDE_Morph);return ide.cloud.username;</l>
            </block>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='costume from text %&apos;text&apos; size %&apos;size&apos;' category='looks' type='reporter'>
      <header/>
      <code/>
      <translations>de:Kostüm aus Text _ Größe _pt:um traje com o texto _ de tamanho _</translations>
      <inputs>
        <input type='%s'>A</input>
        <input type='%n'>72</input>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>costume</l>
            <l>x</l>
            <l>y</l>
            <l>dir</l>
            <l>cst</l>
            <l>trails</l>
          </list>
        </block>
        <block s='doSetVar'>
          <l>x</l>
          <block s='xPosition'/>
        </block>
        <block s='doSetVar'>
          <l>y</l>
          <block s='yPosition'/>
        </block>
        <block s='doSetVar'>
          <l>dir</l>
          <block s='direction'/>
        </block>
        <block s='doSetVar'>
          <l>cst</l>
          <block s='getCostumeIdx'/>
        </block>
        <block s='up'/>
        <block s='gotoXY'>
          <l>0</l>
          <l>0</l>
        </block>
        <block s='setHeading'>
          <l>90</l>
        </block>
        <block s='doSwitchToCostume'>
          <l>
            <option>Turtle</option>
          </l>
        </block>
        <block s='doSetVar'>
          <l>trails</l>
          <block s='reportPenTrailsAsCostume'/>
        </block>
        <block s='clear'/>
        <block s='write'>
          <block var='text'/>
          <block var='size'/>
        </block>
        <block s='doSetVar'>
          <l>costume</l>
          <block s='reportPenTrailsAsCostume'/>
        </block>
        <block s='clear'/>
        <block s='doRun'>
          <block s='reportJSFunction'>
            <list>
              <l>costume</l>
              <l>name</l>
            </list>
            <l>costume.name = name;</l>
          </block>
          <list>
            <block var='costume'/>
            <block var='text'/>
          </list>
        </block>
        <block s='gotoXY'>
          <l>0</l>
          <l>0</l>
        </block>
        <block s='doSwitchToCostume'>
          <block var='trails'/>
        </block>
        <block s='doStamp'/>
        <block s='doSwitchToCostume'>
          <block var='cst'/>
        </block>
        <block s='gotoXY'>
          <block var='x'/>
          <block var='y'/>
        </block>
        <block s='setHeading'>
          <block var='dir'/>
        </block>
        <block s='doReport'>
          <block var='costume'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='generate tts output for string %&apos;str&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportJoinWords'>
            <list>
              <l>At </l>
              <block s='reportIfElse'>
                <block s='reportGreaterThan'>
                  <block s='reportDate'>
                    <l>
                      <option>hour</option>
                    </l>
                  </block>
                  <l>12</l>
                </block>
                <block s='reportDifference'>
                  <block s='reportDate'>
                    <l>
                      <option>hour</option>
                    </l>
                  </block>
                  <l>12</l>
                </block>
                <block s='reportDate'>
                  <l>
                    <option>hour</option>
                  </l>
                </block>
              </block>
              <l/>
              <block s='reportDate'>
                <l>
                  <option>minute</option>
                </l>
              </block>
              <block s='reportIfElse'>
                <block s='reportGreaterThan'>
                  <block s='reportDate'>
                    <l>
                      <option>hour</option>
                    </l>
                  </block>
                  <l>11</l>
                </block>
                <l>PM</l>
                <l>AM</l>
              </block>
              <l>, </l>
              <block s='reportListItem'>
                <l>1</l>
                <block s='reportTextSplit'>
                  <block var='str'/>
                  <l>]</l>
                </block>
              </block>
              <l> wrote: </l>
              <block s='reportListItem'>
                <l>2</l>
                <block s='reportTextSplit'>
                  <block var='str'/>
                  <l>]</l>
                </block>
              </block>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='post message %&apos;message&apos; to %&apos;win&apos; then %&apos;b&apos; %&apos;args&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
        <input type='%s'/>
        <input type='%s'/>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>m</l>
                <l>win</l>
                <l>then</l>
                <l>args</l>
              </list>
              <l>(win || window).postMessage(m); window.addEventListener(&apos;message&apos;,function a(evt){if(evt.data.id &amp;&amp; evt.data.id === m.id){window.removeEventListener(&apos;message&apos;,a); invoke(then,new List([evt].concat(args.asArray())),undefined,10000,&apos;Error&apos;,false,undefined,false)}})</l>
            </block>
            <list>
              <block var='message'/>
              <block var='win'/>
              <block var='b'/>
              <block var='args'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='is %&apos;obj&apos; type %&apos;type&apos;' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>o</l>
                <l>t</l>
              </list>
              <l>return o.type === t</l>
            </block>
            <list>
              <block var='obj'/>
              <block var='type'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='data %&apos;event&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>evt</l>
              </list>
              <l>return evt.data</l>
            </block>
            <list>
              <block var='event'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='id %&apos;obj&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>obj</l>
              </list>
              <l>return obj.id</l>
            </block>
            <list>
              <block var='obj'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='source %&apos;evt&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>evt</l>
              </list>
              <l>return evt.source</l>
            </block>
            <list>
              <block var='evt'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='type %&apos;type&apos; data %&apos;data&apos; id %&apos;id&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
        <input type='%s'/>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>t</l>
                <l>d</l>
                <l>id</l>
              </list>
              <l>return {type: type,data: data,id: id}</l>
            </block>
            <list>
              <block var='type'/>
              <block var='data'/>
              <block var='id'/>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations>pt:tenta executar _ e, em caso de erro _ , executa _</translations>
      <inputs>
        <input type='%cs'/>
        <input type='%upvar'/>
        <input type='%cs'/>
      </inputs>
      <script>
        <custom-block s='let %upvar be %s'>
          <l>reset</l>
          <block s='evaluate'>
            <block s='reportJSFunction'>
              <list>
                <l>proc</l>
              </list>
              <l>var oldHandleError = proc.handleError,    oldCatchingErrors = proc.isCatchingErrors;return function(){ proc.handleError = oldHandleError; proc.isCatchingErrors = oldCatchingErrors;}</l>
            </block>
            <list/>
          </block>
        </custom-block>
        <block s='doCallCC'>
          <block s='reifyScript'>
            <script>
              <block s='doRun'>
                <block s='reportJSFunction'>
                  <list>
                    <l>reset</l>
                    <l>action</l>
                    <l>handler</l>
                    <l>proc</l>
                  </list>
                  <l>proc.isCatchingErrors = true;proc.handleError = function(error, element){ reset(); proc.context = handler; proc.context.variables.setVar("error", error);}try{ proc.evaluate(action, new List(), true);}catch(e){ proc.handleError(e, null);} </l>
                </block>
                <list>
                  <block var='reset'/>
                  <block var='action'/>
                  <block s='reifyScript'>
                    <script>
                      <block s='doRun'>
                        <block s='reifyScript'>
                          <script>
                            <block s='doRun'>
                              <block var='handler'/>
                              <list/>
                            </block>
                            <block s='doRun'>
                              <block var='return'/>
                              <list/>
                            </block>
                          </script>
                          <list/>
                        </block>
                        <list/>
                      </block>
                    </script>
                    <list/>
                  </block>
                </list>
              </block>
            </script>
            <list>
              <l>return</l>
            </list>
          </block>
        </block>
        <block s='doRun'>
          <block var='reset'/>
          <list/>
        </block>
      </script>
    </block-definition>
    <block-definition s='error %&apos;msg&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations>pt:lança o erro _</translations>
      <inputs>
        <input type='%txt'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportJSFunction'>
            <list>
              <l>msg</l>
            </list>
            <l>throw new Error(msg);</l>
          </block>
          <list>
            <block var='msg'/>
          </list>
        </block>
      </script>
    </block-definition>
    <block-definition s='let %&apos;var&apos; be %&apos;val&apos;' category='other' type='command'>
      <header/>
      <code/>
      <translations>pt:cria a variável de guião _ com valor _</translations>
      <inputs>
        <input type='%upvar'/>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doSetVar'>
          <l>var</l>
          <block var='val'/>
        </block>
      </script>
    </block-definition>
    <block-definition s='safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%anyUE'/>
        <input type='%upvar'/>
        <input type='%anyUE'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>value</l>
          </list>
        </block>
        <custom-block s='safely try %cs then if %upvar %cs'>
          <script>
            <block s='doSetVar'>
              <l>value</l>
              <block s='evaluate'>
                <block var='this'/>
                <list/>
              </block>
            </block>
          </script>
          <l>err</l>
          <script>
            <block s='doSetVar'>
              <l>error</l>
              <block var='err'/>
            </block>
            <block s='doSetVar'>
              <l>value</l>
              <block s='evaluate'>
                <block var='that'/>
                <list/>
              </block>
            </block>
          </script>
        </custom-block>
        <block s='doReport'>
          <block var='value'/>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables>
    <variable name='chat'>
      <list id='1729' struct='atomic'>[miniepicness]: oops i killed it,[miniepicness]: oops i killed it</list>
    </variable>
    <variable name='username'>
      <l>user</l>
    </variable>
    <variable name='ready'>
      <bool>true</bool>
    </variable>
    <variable name='update'>
      <l>false</l>
    </variable>
    <variable name='tts'>
      <bool>false</bool>
    </variable>
  </variables>
</project><media name="[CHATROOM] SnapRoom" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>