<snapdata remixID="9421224"><project name="Online Pixels Drawing" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes>Click anywhere and it will be saved to the cloud! left key and right to change colors&#xD;up key to change to erase mode and down key to change to draw mode</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAEjklEQVR4Xu3XvUvUARzH8e+PQy8VD+U6UXBwSlsCR0MR/4u2BnEXXBSSMOgPuDXBxaHJf0ERoanJhsThQoVEEHxEER/qfr/BhyA4fCuF9z6QqO77oXv15vSSX9VH+PjnAhsbG1GpVNC/49X8XBS/rd7ZSL6uJmj0kY8TA3xk4RrmT09PY3NzM3p7e2t49t+f8mVlJV6/fXM3wB8/DRCp1sHx8vJyDA8P41d6cXERlffv4sXn+eutxACx65MfWFpaioGBgUh/Gmpqaor9/f1oa2u7/vXw8DAODg6iu7s7jo6OolAoRPpnLS0tkcvlbnyq998/foiXc58M8MlX84Av8HaAl5eXWYQLCwuxuLgY4+Pj0dfXF1tbW9He3h7Nzc2xs7MTXV1dsba2lv3d9cMAH/B/pY6m0gAHBwdjbGwsJiYmolwux+zsbExOTsbU1FTMzMzE9PR0Fl8+n4+zs7Ps96Ojo9HR0RGtra3R0NAQ1bdQ3wHrqJsHe6npB5DOzs5obGxEm3t7e5E7OYnCs/zNt+DnJT+EINU6OU7fBXt6eqJUKtX8itNg06/j4+PsW/Tu7m4MDQ3d/RScJAZYs2idPzH9FHt1dVWzQhrd9vZ29Pf3x/n5efbB5c9HtT8DrFnUJ95LIH33TB8jIyMGeC9Bj7DA+vp6FIvF7Ov2w3dATOsAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAETBAouctFjBATOgAEfjfA/wNJqWDl+m6PscAAAAASUVORK5CYII=</thumbnail><stage name="Stage" width="500" height="500" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="236" y="236" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="Untitled(2)" center-x="12.5" center-y="13" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAaCAYAAABCfffNAAAASElEQVRIS2P8ryB1hoHGgPG/otR/GtvBMGoJSSE8GlyjwUVSCJCkeDR1jQYXSSFAkuLR1DUaXCSFAEmKh1PqUpY0JsnvZCgGAIBfOOZWmaHVAAAAAElFTkSuQmCC" id="10"/></item><item><costume name="Untitled" center-x="15.5" center-y="13.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAXUlEQVRIS2NkQAKLFi36j8ynNjsuLo4RZCaYoLVlyI4HWcxITwthlo9aSu00hGLeaPCOBi9VQmA0IVElGHEZMhq8o8FLlRAYTUhUCcbRfDowCWnktHsHxKcD0ZcBAAtCWZaRoo7EAAAAAElFTkSuQmCC" id="11"/></item></list></costumes><sounds><list struct="atomic" id="12"></list></sounds><blocks></blocks><variables></variables><scripts><script x="14" y="10"><custom-block s="cloud var %s"><l>pixel</l></custom-block></script><script x="14" y="431"><block s="receiveMessage"><l>Go</l></block><block s="doForever"><script><block s="gotoXY"><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseX"></block><l>23.63</l></block></block><l>23.63</l></block><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseY"></block><l>23.63</l></block></block><l>23.63</l></block></block><block s="doIf"><block s="reportLessThan"><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseX"></block><l>23.63</l></block></block><l>23.63</l></block><l>-236</l></block><script><block s="setXPosition"><l>-236</l></block></script></block><block s="doIf"><block s="reportLessThan"><l>236</l><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseX"></block><l>23.63</l></block></block><l>23.63</l></block></block><script><block s="setXPosition"><l>236</l></block></script></block><block s="doIf"><block s="reportLessThan"><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseY"></block><l>23.63</l></block></block><l>23.63</l></block><l>-236</l></block><script><block s="setYPosition"><l>-236</l></block></script></block><block s="doIf"><block s="reportLessThan"><l>236</l><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block s="reportMouseY"></block><l>23.63</l></block></block><l>23.63</l></block></block><script><block s="setYPosition"><l>236</l></block></script></block><block s="doSetVar"><l>X</l><block s="reportSum"><block s="reportRound"><block s="reportQuotient"><block s="xPosition"></block><l>23.63</l></block></block><l>10</l></block></block><block s="doSetVar"><l>Y</l><block s="reportSum"><block s="reportRound"><block s="reportQuotient"><block s="yPosition"></block><l>23.63</l></block></block><l>10</l></block></block><block s="doSetVar"><l>color effect</l><block s="getEffect"><l><option>color</option></l></block></block><block s="doSwitchToCostume"><block s="reportSum"><block var="erase all"/><l>0</l></block></block><block s="doIf"><block s="reportKeyPressed"><l><option>left arrow</option></l></block><script><block s="changeEffect"><l><option>color</option></l><l>-3</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>right arrow</option></l></block><script><block s="changeEffect"><l><option>color</option></l><l>3</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><block s="doSetVar"><l>erase all</l><l>2</l></block></script></block><block s="doIf"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><script><block s="doSetVar"><l>erase all</l><l>1</l></block></script></block></script></block></script><script x="23" y="42"><block s="receiveGo"></block><block s="clear"></block><custom-block s="cloud ID %s"><l>abctestxdd</l></custom-block><block s="setEffect"><l><option>color</option></l><l>0</l></block><block s="doSetVar"><l>erase all</l><l>1</l></block><block s="setEffect"><l><option>brightness</option></l><l>0</l></block><block s="clearEffects"></block><block s="bubble"><l></l></block><block s="doForever"><script><block s="bubble"><l></l></block><block s="doBroadcast"><l>Go</l></block><block s="doWaitUntil"><block s="reportMouseDown"></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportMouseDown"></block></block></block><block s="doStopThis"><l><option>other scripts in sprite</option></l></block><block s="bubble"><l>Loading...</l></block><block s="doSetVar"><l>join</l><block s="reportJoinWords"><list><block var="X"/><l>;</l><block var="Y"/><l>;</l><block var="color effect"/><l>;</l><block var="erase all"/><l>;</l><l>-</l></list></block></block><custom-block s="set cloud var %s to %s"><l>pixel</l><block s="reportJoinWords"><list><custom-block s="cloud var %s"><l>pixel</l></custom-block><block var="join"/></list></block></custom-block></script></block></script><script x="265" y="219"><custom-block s="cloud var %s"><l>pixel</l></custom-block></script><script x="129" y="198"><custom-block s="set cloud var %s to %s"><l>pixel</l><l></l></custom-block></script></scripts></sprite><sprite name="Sprite(2)" idx="2" x="-236.29999999999995" y="-47.25999999999999" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="2" color="80,80,80,1" pen="tip" id="251"><costumes><list id="252"><item><costume name="Untitled(3)" center-x="14" center-y="15.199999999999989" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAYAAADQBxWhAAAAYUlEQVRIS+2TsQkAIAwE4wBO47QO6AQOEBOwtRA+3QnBJtzD8Wnuvsys34mv7O0g51iLUC+LeYAJLTWOXvRKDFAkicYXBL3olRigSBKN3ClFokgSA1mkKSF9QDJ0fOxLVg8swHhbg9xmHgAAAABJRU5ErkJggg==" id="253"/></item><item><costume name="Untitled(2)" center-x="12.5" center-y="13" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAaCAYAAABCfffNAAAASElEQVRIS2P8ryB1hoHGgPG/otR/GtvBMGoJSSE8GlyjwUVSCJCkeDR1jQYXSSFAkuLR1DUaXCSFAEmKh1PqUpY0JsnvZCgGAIBfOOZWmaHVAAAAAElFTkSuQmCC" id="254"/></item><item><costume name="Untitled" center-x="14" center-y="15.199999999999989" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAYAAADQBxWhAAAAYUlEQVRIS+2TsQkAIAwE4wBO47QO6AQOEBOwtRA+3QnBJtzD8Wnuvsys34mv7O0g51iLUC+LeYAJLTWOXvRKDFAkicYXBL3olRigSBKN3ClFokgSA1mkKSF9QDJ0fOxLVg8swHhbg9xmHgAAAABJRU5ErkJggg==" id="255"/></item></list></costumes><sounds><list struct="atomic" id="256"></list></sounds><blocks></blocks><variables></variables><scripts><script x="25" y="219"><block s="receiveGo"></block><block s="doForever"><script><custom-block s="Render %txt"><custom-block s="cloud var %s"><l>pixel</l></custom-block></custom-block></script></block></script></scripts></sprite><watcher var="X" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="Y" style="normal" x="10" y="31.000001999999995" color="243,118,29" hidden="true"/><watcher var="color effect" style="normal" x="10" y="52.00000399999999" color="243,118,29" hidden="true"/><watcher var="join" style="normal" x="10" y="73.00000599999998" color="243,118,29" hidden="true"/><watcher var="erase all" style="normal" x="10" y="94.00000799999998" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="random %&apos;text&apos; separator %&apos;sep&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">1,2,3,4,5</input><input type="%txt">,</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="text"/><block var="sep"/></block></block><block s="doReport"><block s="reportListItem"><l><option>any</option></l><block var="a"/></block></block></script></block-definition><block-definition s="text %&apos;text&apos; find for %&apos;find&apos; replace with %&apos;replace&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello World!</input><input type="%txt">Hello</input><input type="%txt">Hi</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l><l>d</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="text"/><l> </l></block></block><block s="doSetVar"><l>b</l><l>1</l></block><block s="doSetVar"><l>c</l><l></l></block><block s="doRepeat"><block s="reportDifference"><block s="reportListLength"><block var="a"/></block><l>1</l></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="b"/><block var="a"/></block><block var="find"/></block><script><block s="doReplaceInList"><block var="b"/><block var="a"/><block var="replace"/></block></script></block><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="c"/><block s="reportJoinWords"><list><block s="reportListItem"><block var="b"/><block var="a"/></block><l> </l></list></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="b"/><block var="a"/></block><block var="find"/></block><script><block s="doReplaceInList"><block var="b"/><block var="a"/><block var="replace"/></block></script></block><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="c"/><block s="reportListItem"><block var="b"/><block var="a"/></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doReport"><block var="c"/></block></script></block-definition><block-definition s="substr %&apos;s&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></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;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></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"></custom-block></list></block><l>.txt</l></list></block></block></custom-block></script></block-definition><block-definition s="ignore %&apos;s&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="cloud var %&apos;s&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></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"></custom-block></list></block><l>.txt</l></list></block></block></custom-block></block></script></block-definition><block-definition s="cloud ID %&apos;s&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></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" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return cloudid;</l></block><list></list></block></block></script></block-definition><block-definition s="play frequency %&apos;freq&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="199" collapsed="false">Plays a specific note and waits for it to finish</comment><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">0.5</input></inputs><script><custom-block s="play frequency %n Hz for %n beats without waiting"><block var="freq"/><block var="b"/></custom-block><block s="doRest"><block var="b"/></block></script></block-definition><block-definition s="play frequencies %&apos;freqs&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="180" collapsed="false">Plays a chord and waits for it to finish</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><custom-block s="play frequencies %mult%n Hz for %n beats without waiting"><block var="freqs"/><block var="b"/></custom-block><block s="doRest"><block var="b"/></block></script></block-definition><block-definition s="frequency %&apos;note&apos;" type="reporter" category="sound"><comment x="0" y="0" w="183" collapsed="false">Returns the frequency for a piano note</comment><header></header><code></code><translations></translations><inputs><input type="%n">60&#xD;        <options>§_pianoKeyboardMenu</options></input></inputs><script><block s="doReport"><block s="reportProduct"><l>440</l><block s="reportPower"><l>2</l><block s="reportQuotient"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block></block></block></block></script></block-definition><block-definition s="play arpeggio %&apos;freqs&apos; Hz for %&apos;b&apos; beats" type="command" category="sound"><comment x="0" y="0" w="257" collapsed="false">Plays all of the notes in order and waits for them to finish</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="doForEach"><l>item</l><block var="freqs"/><script><custom-block s="play frequency %n Hz for %n beats"><block var="item"/><block var="b"/></custom-block></script></block></script></block-definition><block-definition s="play frequency %&apos;freq&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="80" collapsed="false">Plays a note</comment><header></header><code></code><translations></translations><inputs><input type="%n">440</input><input type="%n">0.5</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freq</l><l>b</l></list><l>const stage = this.parentThatIsA(StageMorph);let context = stage.audioContext();let gain = context.createGain();gain.connect(context.destination);gain.gain.value = stage.volume/800; const oscillator = context.createOscillator();oscillator.connect(gain);let inst;switch (this.instrument) {    default:        inst = "sine";        break;    case 2:        inst = "square";        break;    case 3:        inst = "sawtooth";        break;    case 4:        inst = "triangle";        break;}oscillator.type = inst;oscillator.frequency.value = freq;oscillator.start();oscillator.stop(context.currentTime + b * 60 / stage.tempo);</l></block><list><block var="freq"/><block var="b"/></list></block></script></block-definition><block-definition s="octave %&apos;note&apos; %&apos;oct&apos;" type="reporter" category="sound"><comment x="0" y="0" w="291" collapsed="false">Outputs the note after it has been shifted by the octave</comment><header></header><code></code><translations></translations><inputs><input type="%n">60&#xD;        <options>§_pianoKeyboardMenu</options></input><input type="%n">0</input></inputs><script><block s="doReport"><block s="reportSum"><block var="note"/><block s="reportProduct"><block var="oct"/><l>12</l></block></block></block></script></block-definition><block-definition s="do %&apos;blocks&apos; in order %&apos;order&apos;" type="command" category="control"><comment x="0" y="0" w="167" collapsed="false">Do each block in the order specified</comment><header></header><code></code><translations></translations><inputs><input type="%mult%cmdRing"></input><input type="%mult%n"></input></inputs><script><block s="doForEach"><l>index</l><block var="order"/><script><block s="doRun"><block s="reportListItem"><block var="index"/><block var="blocks"/></block><list></list></block></script></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="200" collapsed="false">Creates a script variable with an initial value</comment><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s">0</input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><block-definition s="play frequencies %&apos;freqs&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="90" collapsed="false">Plays a chord</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>freqs</l><l>b</l></list><l>const stage = this.parentThatIsA(StageMorph);let context = stage.audioContext();let gain = context.createGain();gain.connect(context.destination);gain.gain.value = stage.volume/800;let inst;switch (this.instrument) {    default:        inst = "sine";        break;    case 2:        inst = "square";        break;    case 3:        inst = "sawtooth";        break;    case 4:        inst = "triangle";        break;} for (freq of freqs.asArray()) {  let oscillator = context.createOscillator();  oscillator.connect(gain);  oscillator.type = inst;  oscillator.frequency.value = freq;  oscillator.start(context.currentTime);  oscillator.stop(context.currentTime + b * 60 / stage.tempo);}</l></block><list><block var="freqs"/><block var="b"/></list></block></script></block-definition><block-definition s="play arpeggio %&apos;freqs&apos; Hz for %&apos;b&apos; beats without waiting" type="command" category="sound"><comment x="0" y="0" w="137" collapsed="false">Plays all of the notes in order</comment><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input><input type="%n">0.5</input></inputs><script><block s="fork"><block s="reifyScript"><script><custom-block s="play arpeggio %mult%n Hz for %n beats"><block var="freqs"/><block var="b"/></custom-block></script><list></list></block><list></list></block></script></block-definition><block-definition s="Open website %&apos;website&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Opens a website in a new tab or window. Make sure it starts with https:// or http://</comment><header></header><code></code><translations></translations><inputs><input type="%s">https://www.google.com</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>openWebAddress</l></list><l>window.open(openWebAddress);</l></block><list><block var="website"/></list></block></script></block-definition><block-definition s="Alert %&apos;alert text&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Popup with text.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>alertNameText</l></list><l>alert(alertNameText);</l></block><list><block var="alert text"/></list></block></script></block-definition><block-definition s="Notification title %&apos;title&apos; text %&apos;text&apos; icon link %&apos;icon&apos; image link %&apos;image&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Creates a desktop notification. Any or all of the inputs can be filled.NB: Will ask user for permission first.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%txt"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>notificationTitle</l><l>notificationText</l><l>iconLink</l><l>imageLink</l></list><l>// Check if the browser supports notifications  if (!("Notification" in window)) {}  else if (Notification.permission === "granted") {    var notification = new Notification(notificationTitle, {body:notificationText, icon:iconLink, image:imageLink});  }  else if (Notification.permission !== "denied") {    Notification.requestPermission().then(function (permission) {    if (permission === "granted") {        var notification = new Notification(notificationText);      }    });  }</l></block><list><block var="title"/><block var="text"/><block var="icon"/><block var="image"/></list></block></script></block-definition><block-definition s="Confirm popup %&apos;text&apos;" type="predicate" category="other"><comment x="0" y="0" w="90" collapsed="false">Popup with &apos;Ok&apos; or &apos;Cancel&apos;</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>confirmText</l></list><l>return(confirm(confirmText));</l></block><list><block var="text"/></list></block></block></script></block-definition><block-definition s="Prompt %&apos;text&apos; default %&apos;default text&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">Popup with an input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>promptText</l><l>promptDefault</l></list><l>return(prompt(promptText, promptDefault));</l></block><list><block var="text"/><block var="default text"/></list></block></block></script></block-definition><block-definition s="popup %&apos;text&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Creates a new window with text in.</comment><header></header><code></code><translations></translations><inputs><input type="%s">Text</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>javaText</l></list><l>let newWindow = window.open("about:blank", "", "_blank"); let textBlock = javaTextif (newWindow) {	newWindow.document.write(textBlock);}</l></block><list><block var="text"/></list></block></script></block-definition><block-definition s="set cookie var %&apos;cname&apos; to %&apos;cvalue&apos; will expire in %&apos;exdays&apos; days" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Creates a browser cookie with the value, title, and expire date.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%n"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>cname</l><l>exdays</l><l>cvalue</l></list><l>var d = new Date();  d.setTime(d.getTime() + (exdays*24*60*60*1000));  var expires = "expires="+ d.toUTCString();  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";</l></block><list><block var="cname"/><block var="exdays"/><block var="cvalue"/></list></block></script></block-definition><block-definition s="get cookie var %&apos;cname&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">Returns the value of the specified cookie.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>cname</l></list><l>var name = cname + "=";  var decodedCookie = decodeURIComponent(document.cookie);  var ca = decodedCookie.split(&apos;;&apos;);  for(var i = 0; i &lt;ca.length; i++) {    var c = ca[i];    while (c.charAt(0) == &apos; &apos;) {      c = c.substring(1);    }    if (c.indexOf(name) == 0) {      return c.substring(name.length, c.length);    }  }return ca;</l></block><list><block var="cname"/></list></block></block></script></block-definition><block-definition s="File save prompt . name: %&apos;file name&apos; text %&apos;file text&apos; extension: %&apos;file extension&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>textContents</l><l>textName</l><l>fileExtension</l></list><l>var ide=this.parentThatIsA(IDE_Morph);&#xD;ide.saveFileAs(textContents,&apos;text/&apos; + fileExtension + &apos;;charset=utf-8&apos;, textName);</l></block><list><block var="file text"/><block var="file name"/><block var="file extension"/></list></block></script></block-definition><block-definition s="set cursor %&apos;cursor name&apos;" type="command" category="other"><comment x="0" y="0" w="261" collapsed="false">Sets cursor to a specific image. See https://www.w3schools.com/CSSref/playit.asp?filename=playcss_cursor&amp;preval=alias for a list of keywords</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>cursorName</l></list><l>document.body.style.cursor = cursorName;</l></block><list><block var="cursor name"/></list></block></script></block-definition><block-definition s="return cursor" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">&quot;Help! I don&apos;t know how to change the cursor back!&quot;</comment><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="set cursor %txt"><l>default</l></custom-block></script></block-definition><block-definition s="website popup %&apos;website&apos;" type="command" category="other"><comment x="0" y="0" w="114" collapsed="false">Opens a new window with a website.</comment><header></header><code></code><translations></translations><inputs><input type="%s">https://www.google.com</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>javaWebsite</l></list><l>let newWindow = window.open(javaWebsite, "", "_blank");</l></block><list><block var="website"/></list></block></script></block-definition><block-definition s="anywhere url %&apos;url&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">Get html contents from anywhere on the internet.</comment><header></header><code></code><translations></translations><inputs><input type="%s">https://en.wikipedia.org/wiki/Main_page</input></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>https://cors-anywhere.herokuapp.com/</l><block var="url"/></list></block></block></block></script></block-definition><block-definition s="pen %&apos;state&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doIfElse"><block var="state"/><script><block s="down"></block></script><script><block s="up"></block></script></block></script></block-definition><block-definition s="wait for click" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWaitUntil"><block s="reportMouseDown"></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportMouseDown"></block></block></block></script></block-definition><block-definition s="get hex at mouse-pointer" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>1</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>mouse-pointer</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>2</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>mouse-pointer</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>3</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>mouse-pointer</option></l></block></block></custom-block></list></block></block></script></block-definition><block-definition s="set pen color to r: %&apos;r&apos; g: %&apos;g&apos; b: %&apos;b&apos;" type="command" category="pen"><header></header><code></code><translations>pt:altera a cor da tua caneta para vermelho _ , verde _ e azul _ (0 a 255)&#xD;</translations><inputs><input type="%n">255</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>r</l><l>g</l><l>b</l></list><l>this.setColor(new Color(r, g, b));</l></block><list><block var="r"/><block var="g"/><block var="b"/></list></block></script></block-definition><block-definition s="convert hex %&apos;hex&apos; to decimal" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>hex</l></list><l>return parseInt(hex, 16)</l></block><list><block var="hex"/></list></block></block></script></block-definition><block-definition s="convert hex %&apos;hex&apos; to rgb" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Returns list [r,g,b]</comment><header></header><code></code><translations></translations><inputs><input type="%s">ff00ff</input></inputs><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>6</l></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="convert hex %s to decimal"><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="hex"/><l>1</l><l>2</l></custom-block></custom-block><custom-block s="convert hex %s to decimal"><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="hex"/><l>3</l><l>4</l></custom-block></custom-block><custom-block s="convert hex %s to decimal"><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="hex"/><l>5</l><l>6</l></custom-block></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>3</l></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>2</l><block var="hex"/></block><block s="reportLetter"><l>2</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>3</l><block var="hex"/></block><block s="reportLetter"><l>3</l><block var="hex"/></block></list></block></custom-block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>1</l></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block><custom-block s="convert hex %s to decimal"><block s="reportJoinWords"><list><block s="reportLetter"><l>1</l><block var="hex"/></block><block s="reportLetter"><l>1</l><block var="hex"/></block></list></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="substring of %&apos;string&apos; before %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="175.33333333333334" collapsed="false">Reports the part of the first string up to the first instance of the second string inside it.  If the second string isn&apos;t found, reports the entire first string.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l></list><l>var world=this.parentThatIsA(IDE_Morph);if (!("stringLibCaseIndependentComparison" in world)) {    world["stringLibCaseIndependentComparison"] = true;};if (world["stringLibCaseIndependentComparison"]) {    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());    if (index&lt;0) {return string};    return string.slice(0,index);} else {    var index=string.indexOf(marker);    if (index&lt;0) {return string};    return string.slice(0,index);}</l></block><list><block var="string"/><block var="marker"/></list></block></block></script></block-definition><block-definition s="substring of %&apos;string&apos; after %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="203.33333333333334" collapsed="false">Reports the portion of the first input string starting after the first occurrence of the second string.  If the second string isn&apos;t found in the first string, reports an empty string.</comment><header></header><code></code><translations>pt:o texto de _ depois de _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l><l>markerlength</l></list><l>var world=this.parentThatIsA(IDE_Morph);if (!("stringLibCaseIndependentComparison" in world)) {    world["stringLibCaseIndependentComparison"] = true;};if (world["stringLibCaseIndependentComparison"]) {    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());    if (index&lt;0) {return ""};    return string.slice(index+markerlength);} else {    var index=string.indexOf(marker);    if (index&lt;0) {return ""};    return string.slice(index+markerlength);}</l></block><list><block var="string"/><block var="marker"/><block s="reportStringSize"><block var="marker"/></block></list></block></block></script></block-definition><block-definition s="position of %&apos;small&apos; in %&apos;large&apos;" type="reporter" category="operators"><comment x="0" y="0" w="294" collapsed="false">Reports the character position (starting from 1) of the beginning of the first input string inside the second input string.If it&apos;s not found, reports 0.</comment><header></header><code></code><translations>pt:a posição de _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sub</l><l>sup</l></list><l>var world=this.parentThatIsA(IDE_Morph);if (!("stringLibCaseIndependentComparison" in world)) {    world["stringLibCaseIndependentComparison"] = true;};if (world["stringLibCaseIndependentComparison"]) {    return 1+sup.toLocaleLowerCase().indexOf(sub.toLocaleLowerCase());} else {    return 1+sup.indexOf(sub);}</l></block><list><block var="small"/><block var="large"/></list></block></block></script></block-definition><block-definition s="use case-independent comparisons %&apos;tf&apos;" type="command" category="operators"><comment x="0" y="0" w="225.33333333333334" collapsed="false">If input is TRUE, comparisons made by functions in the string library will be case-independent (so &quot;FOO&quot; = &quot;foo&quot;).  This is the default.If input is FALSE, comparisons will be exact.</comment><header></header><code></code><translations>pt:altera comparações ignorando distinção minúsculas/maiúsculas para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>flag</l></list><l>var world=this.parentThatIsA(IDE_Morph);world[&apos;stringLibCaseIndependentComparison&apos;] = flag;</l></block><list><block var="tf"/></list></block></script></block-definition><block-definition s="substring of %&apos;str&apos; from position %&apos;start&apos; to position %&apos;end&apos; inclusive" type="reporter" category="operators"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Reports the portion of the first input (string) starting at the position given by the second input (counting from 1, like LETTER n OF) and ending at the position given by the third input (also counting from 1).  If the third input is empty, reports the portion from the first position to the end of the string.If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.</comment><header></header><code></code><translations>pt:o texto de _ entre as posições _ e _ , inclusive&#xD;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l><l>start</l><l>end</l></list><l>if (end != "") {    return str.slice(start-1,end);} else {    return str.slice(start-1);}</l></block><list><block var="str"/><block var="start"/><block var="end"/></list></block></block></script></block-definition><block-definition s="set pen colour to hex: %&apos;hex&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s">123456</input></inputs><script><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><custom-block s="convert hex %s to rgb"><block var="hex"/></custom-block></block><block s="reportListItem"><l>2</l><custom-block s="convert hex %s to rgb"><block var="hex"/></custom-block></block><block s="reportListItem"><l>3</l><custom-block s="convert hex %s to rgb"><block var="hex"/></custom-block></block></custom-block></script></block-definition><block-definition s="RGB color" type="reporter" category="pen"><header></header><code></code><translations>pt:a cor da caneta em RGB (vermelho, verde e azul; 0 a 255)&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return new List([this.color.r, this.color.g, this.color.b]);</l></block><list></list></block></block></script></block-definition><block-definition s="convert decimal %&apos;dec&apos; to 2-digit-padded hex" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>hex</l></list></block><block s="doSetVar"><l>hex</l><block s="evaluate"><block s="reportJSFunction"><list><l>dec</l></list><l>return dec.toString(16)</l></block><list><block var="dec"/></list></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="hex"/></block><l>1</l></block><script><block s="doSetVar"><l>hex</l><block s="reportJoinWords"><list><l>0</l><block var="hex"/></list></block></block></script></block><block s="doReport"><block var="hex"/></block></script></block-definition><block-definition s="hexmap-style hex at this sprite" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>output-temp</l></list></block><block s="doSetVar"><l>output-temp</l><custom-block s="get hex at this sprite"></custom-block></block><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block s="reportLetter"><l>1</l><block var="output-temp"/></block><block s="reportLetter"><l>2</l><block var="output-temp"/></block></block><block s="reportAnd"><block s="reportEquals"><block s="reportLetter"><l>3</l><block var="output-temp"/></block><block s="reportLetter"><l>4</l><block var="output-temp"/></block></block><block s="reportEquals"><block s="reportLetter"><l>5</l><block var="output-temp"/></block><block s="reportLetter"><l>6</l><block var="output-temp"/></block></block></block></block><script><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block s="reportLetter"><l>2</l><block var="output-temp"/></block><block s="reportLetter"><l>3</l><block var="output-temp"/></block></block><block s="reportEquals"><block s="reportLetter"><l>4</l><block var="output-temp"/></block><block s="reportLetter"><l>5</l><block var="output-temp"/></block></block></block><script><block s="doSetVar"><l>output-temp</l><block s="reportJoinWords"><list><l>m</l><block s="reportLetter"><l>1</l><block var="output-temp"/></block></list></block></block></script><script><block s="doSetVar"><l>output-temp</l><block s="reportJoinWords"><list><l>s</l><block s="reportLetter"><l>1</l><block var="output-temp"/></block><block s="reportLetter"><l>3</l><block var="output-temp"/></block><block s="reportLetter"><l>5</l><block var="output-temp"/></block></list></block></block></script></block></script></block><block s="doReport"><block var="output-temp"/></block></script></block-definition><block-definition s="get hex at this sprite" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>1</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>myself</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>2</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>myself</option></l></block></block></custom-block><custom-block s="convert decimal %n to 2-digit-padded hex"><block s="reportListItem"><l>3</l><block s="reportAspect"><l><option>r-g-b-a</option></l><l><option>myself</option></l></block></block></custom-block></list></block></block></script></block-definition><block-definition s="create hexmap from x: %&apos;x1&apos; y: %&apos;y1&apos; to x: %&apos;x2&apos; y: %&apos;y2&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">-220</input><input type="%n">160</input><input type="%n">220</input><input type="%n">-160</input></inputs><script><block s="doDeclareVariables"><list><l>hexmap-out</l><l>oldX</l><l>oldY</l><l>oldDIR</l></list></block><block s="doSetVar"><l>oldX</l><block s="xPosition"></block></block><block s="doSetVar"><l>oldY</l><block s="yPosition"></block></block><block s="doSetVar"><l>oldDIR</l><block s="direction"></block></block><block s="gotoXY"><block var="x1"/><block var="y1"/></block><block s="doWarp"><script><block s="doFor"><l>y</l><block var="y1"/><block var="y2"/><script><block s="doFor"><l>x</l><block var="x1"/><block var="x2"/><script><block s="doSetVar"><l>hexmap-out</l><block s="reportJoinWords"><list><block var="hexmap-out"/><custom-block s="hexmap-style hex at this sprite"></custom-block></list></block></block><block s="setXPosition"><block s="reportSum"><block var="x"/><l>1</l></block></block></script></block><block s="doSetVar"><l>hexmap-out</l><block s="reportJoinWords"><list><block var="hexmap-out"/><l>\</l></list></block></block><block s="setYPosition"><block s="reportDifference"><block var="y"/><l>1</l></block></block><block s="setXPosition"><block var="x1"/></block></script><comment w="117" collapsed="true">using for just in case I need the loop count, even though I don&apos;t think I will</comment></block></script></block><block s="setXPosition"><block var="oldX"/></block><block s="setYPosition"><block var="oldY"/></block><block s="setHeading"><block var="oldDIR"/></block><block s="doReport"><block var="hexmap-out"/></block></script></block-definition><block-definition s="Seconds %&apos;sec&apos; To Minutes" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block var="sec"/><l>60</l></block></block></script></block-definition><block-definition s="write %&apos;text&apos; size %&apos;size&apos; direction %&apos;direction&apos; at x: %&apos;x&apos; y: %&apos;y&apos; color %&apos;color1&apos; %&apos;color2&apos; %&apos;color3&apos; %&apos;color4&apos; clear? %&apos;clear?&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input><input type="%n">90</input><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input><input type="%n">100</input><input type="%n">0</input><input type="%n">0</input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>code</l></list></block><block s="doSetVar"><l>code</l><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>X</l><l>Y</l><l>Direction</l></list></block><block s="doSetVar"><l>X</l><block s="xPosition"></block></block><block s="doSetVar"><l>Y</l><block s="yPosition"></block></block><block s="doSetVar"><l>Direction</l><block s="direction"></block></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="direction"/></block><block s="setPenHSVA"><l><option>hue</option></l><block var="color1"/></block><block s="setPenHSVA"><l><option>saturation</option></l><block var="color2"/></block><block s="setPenHSVA"><l><option>brightness</option></l><block var="color3"/></block><block s="setPenHSVA"><l><option>transparency</option></l><block var="color4"/></block><block s="write"><block var="text"/><block var="size"/></block><block s="gotoXY"><block var="X"/><block var="Y"/></block><block s="setHeading"><block var="Direction"/></block></script><list></list></block></block><block s="doIfElse"><block var="clear?"/><script><block s="clear"></block><block s="doRun"><block var="code"/><list></list></block></script><script><block s="doRun"><block var="code"/><list></list></block></script></block></script></block-definition><block-definition s="$cloudGradient Highscore" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>Snap! Didn&apos;t Added Cloud Variable :(</l></block></script></block-definition><block-definition s="Convert %&apos;boolean&apos; To Text" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b">true</input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="boolean"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doReport"><l>true</l></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="boolean"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="doReport"><l>false</l></block></script><script><block s="doReport"><l>error</l></block></script></block></script></block></script></block-definition><block-definition s="play note %&apos;note&apos; for %&apos;seconds&apos; seconds" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n">60<options>§_pianoKeyboardMenu</options></input><input type="%n">0.5</input></inputs><script><block s="doPlayNote"><block var="note"/><block s="reportProduct"><block s="reportQuotient"><block s="getTempo"></block><l>60</l></block><l>0.5</l></block></block></script></block-definition><block-definition s="forever if %&apos;boolean&apos; %&apos;command&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%cs"></input></inputs><script><block s="doForever"><script><block s="doIf"><block s="reportEquals"><block var="boolean"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="fork"><block var="command"/><list></list></block></script></block></script></block></script></block-definition><block-definition s="Reverse %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><block s="reportStringSize"><block var="text"/></block></block><block s="doSetVar"><l>b</l><l></l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportStringSize"><block var="text"/></block><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><block s="reportLetter"><block var="a"/><block var="text"/></block></list></block></block><block s="doChangeVar"><l>a</l><l>-1</l></block></script></block></script></block><block s="doReport"><block var="b"/></block></script></block-definition><block-definition s="%&apos;number1&apos; e %&apos;number2&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">1.3</input><input type="%s">2</input></inputs><script><block s="doReport"><block s="reportProduct"><block var="number1"/><block s="reportMonadic"><l><option>10^</option></l><block var="number2"/></block></block></block></script></block-definition><block-definition s="number %&apos;numbr&apos; dot cut %&apos;dc&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">123.4567890</input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doSetVar"><l>b</l><l></l></block><block s="doIfElse"><block s="reportEquals"><block var="dc"/><l>0</l></block><script><block s="doReport"><block var="numbr"/></block></script><script><block s="doRepeat"><block var="dc"/><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><block s="reportLetter"><block var="a"/><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="numbr"/><l>.</l></block></block></block></list></block></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="numbr"/><l>.</l></block></block><block s="reportJoinWords"><list><l>.</l><block var="b"/></list></block></list></block></block></script></block></script></block-definition><block-definition s="Mix %&apos;texts&apos; Division %&apos;division&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doSetVar"><l>b</l><l></l></block><block s="doSetVar"><l>c</l><l>1</l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportSum"><block s="reportListLength"><block var="texts"/></block><l>0</l></block><script><block s="doRepeat"><block s="reportSum"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="c"/><block var="texts"/></block></block><block var="division"/></block><l>1</l></block><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><block s="reportLetter"><block var="a"/><block s="reportListItem"><block var="c"/><block var="texts"/></block></block></list></block></block><block s="doChangeVar"><l>a</l><l>1</l></block></script></block><block s="doChangeVar"><l>c</l><l>1</l></block><block s="doSetVar"><l>a</l><block s="reportRound"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="c"/><block var="texts"/></block></block><block var="division"/></block></block></block></script></block><block s="doReport"><block var="b"/></block></script></block></script><scripts><script x="725.5205108125001" y="371.0000049999995"><block var="division"/></script><script x="117.47949618749999" y="123.00000499999999"><block s="reportMonadic"><l><option>ceiling</option></l><l>10</l></block></script><script x="217.5498076875" y="386.00000300000016"><block s="reportMonadic"><l><option>ceiling</option></l><l>10</l></block></script></scripts></block-definition><block-definition s="Mix %&apos;separator&apos; %&apos;division number&apos; %&apos;h&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt">,</input><input type="%n">2</input><input type="%txt">Hello,There</input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l><l>d</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block var="h"/><l>,</l></block></block><block s="doSetVar"><l>b</l><l>1</l></block><block s="doSetVar"><l>c</l><l></l></block><block s="doSetVar"><l>d</l><l>1</l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportListLength"><block var="a"/></block><script><block s="doRepeat"><block s="reportSum"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="d"/><block var="a"/></block></block><block var="division number"/></block><block s="reportDifference"><block var="division number"/><l>1</l></block></block><script><block s="doSetVar"><l>c</l><block s="reportJoinWords"><list><block var="c"/><block s="reportLetter"><block var="b"/><block s="reportListItem"><block var="d"/><block var="a"/></block></block></list></block></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block><block s="doChangeVar"><l>d</l><l>1</l></block><block s="doSetVar"><l>b</l><block s="reportRound"><block s="reportQuotient"><block s="reportStringSize"><block s="reportListItem"><block var="d"/><block var="a"/></block></block><block var="division number"/></block></block></block></script></block><block s="doReport"><block var="c"/></block></script></block></script><scripts><script x="217.4794941875" y="106.000002"><block s="reportListLength"><l/></block></script><script x="227.4228545625" y="132.000004"><block var="a"/></script></scripts></block-definition><block-definition s="copy %&apos;list&apos; from %&apos;start&apos; to %&apos;end&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l><l>start</l><l>end</l></list><l>return new List(list.asArray().slice(+start - 1, +end))</l></block><list><block var="list"/><block var="start"/><block var="end"/></list></block></block></script></block-definition><block-definition s="text %&apos;text&apos; size %&apos;size&apos; text align %&apos;textA&apos; font %&apos;textFONT&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input><input type="%txt">left</input><input type="%txt">px monospace</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l><l>textA</l><l>textFONT</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + "px " + textFONT;&#xD;context.textAlign = textA;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/><block var="textA"/><block var="textFONT"/></list></block></script></block-definition><block-definition s="JS map %&apos;reporter&apos; over %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>reporter</l><l>list</l><l>process</l></list><l>// process.context.inputs:&#xD;// [0] - reporter&#xD;// [1] - list (original source)&#xD;// ---------------------------------&#xD;// [2..n] - result values (target)&#xD;&#xD;if (process.context.inputs.length - 2 === list.length()) {&#xD;  process.returnValueToParentContext(&#xD;    new List(process.context.inputs.slice(2))&#xD;  );&#xD;  return;&#xD;}&#xD;var next = list.at(process.context.inputs.length - 1);&#xD;process.pushContext();&#xD;process.evaluate(reporter, new List([next]));</l></block><list><block var="reporter"/><block var="list"/></list></block></block></script></block-definition><block-definition s="speak %&apos;text&apos; at volume %&apos;v&apos; rate %&apos;r&apos; pitch %&apos;p&apos; voice type %&apos;vt&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s">Hello, World!</input><input type="%n">1</input><input type="%n">1</input><input type="%n">0.8</input><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l><l>v</l><l>r</l><l>p</l><l>vt</l></list><l>function say(m) {&#xD;  var msg = new SpeechSynthesisUtterance();&#xD;  var voices = window.speechSynthesis.getVoices();&#xD;  msg.voice = voices[vt];&#xD;  msg.voiceURI = "native";&#xD;  msg.volume = v;&#xD;  msg.rate = r;&#xD;  msg.pitch = p;&#xD;  msg.text = m;&#xD;  msg.lang = &apos;en-US&apos;;&#xD;  speechSynthesis.speak(msg); &#xD;};&#xD;say(msg)</l></block><list><block var="text"/><block var="v"/><block var="r"/><block var="p"/><block var="vt"/></list></block></script></block-definition><block-definition s="MS test %&apos;repeat&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">5000</input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doResetTimer"></block><block s="doWarp"><script><block s="doRepeat"><block var="repeat"/><script><block s="doSetVar"><l>test</l><l>0</l></block></script></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportProduct"><block s="getTimer"></block><l>1000</l></block><l> MS</l></list></block></block></script></block-definition><block-definition s="text %&apos;text&apos; size %&apos;size&apos; text align %&apos;textA&apos; font %&apos;textFONT&apos; at x: %&apos;x&apos; y: %&apos;y&apos; clear? %&apos;boolean&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input><input type="%txt">left</input><input type="%txt">px monospace</input><input type="%n">0</input><input type="%n">0</input><input type="%b">true</input></inputs><script><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="doIf"><block var="boolean"/><script><block s="clear"></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l><l>textA</l><l>textFONT</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + "px " + textFONT;&#xD;context.textAlign = textA;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/><block var="textA"/><block var="textFONT"/></list></block><block s="gotoXY"><block var="x"/><block var="y"/></block></script></block-definition><block-definition s="go to center" type="command" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="gotoXY"><l>0</l><l>0</l></block></script></block-definition><block-definition s="Print %&apos;txt&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%txt">testinput</input></inputs><script><block s="gotoXY"><l>-230</l><l>150</l></block><block s="clear"></block><block s="doDeclareVariables"><list><l>#</l><l>Σ</l><l>LS</l></list></block><block s="doSetVar"><l>LS</l><l>No</l></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doSetVar"><l>Σ</l><l></l></block><block s="doRepeat"><block s="reportStringSize"><block var="txt"/></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doIfElse"><block s="reportEquals"><block s="reportLetter"><block var="#"/><block var="txt"/></block><l> </l></block><script><block s="doSetVar"><l>Σ</l><l> </l></block></script><script><block s="doSetVar"><l>Σ</l><block s="reportLetter"><block var="#"/><block var="txt"/></block></block></script></block><block s="doIf"><block s="reportOr"><block s="reportAnd"><block s="reportGreaterThan"><block s="xPosition"></block><l>200</l></block><block s="reportEquals"><block var="Σ"/><l> </l></block></block><block s="reportEquals"><block s="reportLetter"><block var="#"/><block var="txt"/></block><l>@</l></block></block><script><block s="changeYPosition"><l>-25</l></block><block s="setXPosition"><l>-230</l></block><block s="doSetVar"><l>LS</l><l>Yes</l></block></script></block><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block var="LS"/><l>Yes</l></block><block s="reportOr"><block s="reportEquals"><block var="Σ"/><l> </l></block><block s="reportListContainsItem"><block s="reportTextSplit"><block var="Σ"/><l><option>letter</option></l></block><l>@</l></block></block></block><script></script><script><custom-block s="text %txt size %n text align %txt font %txt"><block s="reportLetter"><block var="#"/><block var="txt"/></block><l>24</l><l>left</l><l>px monospace</l></custom-block><block s="forward"><l>-0.25</l></block></script></block><block s="doSetVar"><l>LS</l><l>No</l></block></script></block></script></block-definition><block-definition s="run script %&apos;This&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">testinput</input></inputs><script><block s="doDeclareVariables"><list><l>number</l></list></block><block s="doSetVar"><l>number</l><l>0</l></block><block s="doIfElse"><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>list</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>Boolean</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>sprite</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>costume</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>sound</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>command</option></l></block><block s="reportOr"><block s="reportIsA"><block var="This"/><l><option>predicate</option></l></block><block s="reportIsA"><block var="This"/><l><option>reporter</option></l></block></block></block></block></block></block></block></block><script><custom-block s="Print %txt"><l>invalid data</l></custom-block><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>z</option></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><l><option>z</option></l></block></block></block><block s="clear"></block></script><script><block s="doRepeat"><block s="reportListLength"><block s="reportTextSplit"><block var="This"/><l>#</l></block></block><script><block s="doChangeVar"><l>number</l><l>1</l></block><custom-block s="Print %txt"><block s="reportListItem"><block var="number"/><block s="reportTextSplit"><block var="This"/><l>#</l></block></block></custom-block><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>z</option></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><l><option>z</option></l></block></block></block></script></block><block s="clear"></block></script></block></script></block-definition><block-definition s="run random %&apos;txt&apos; %&apos;boolean&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">test#input</input><input type="%b">false</input></inputs><script><custom-block s="Print %txt"><block s="reportListItem"><block s="reportRandom"><l>1</l><block s="reportListLength"><block s="reportTextSplit"><block var="txt"/><l>#</l></block></block></block><block s="reportTextSplit"><block var="txt"/><l>#</l></block></block></custom-block><block s="doIf"><block var="boolean"/><script><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>z</option></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><l><option>z</option></l></block></block></block><block s="clear"></block></script></block></script></block-definition><block-definition s="Render %&apos;text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><block s="reportStringSize"><custom-block s="cloud var %s"><l>pixel</l></custom-block></block><l>1</l></block><script></script><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><custom-block s="cloud var %s"><l>pixel</l></custom-block><l>-</l></block></block><block s="doSetVar"><l>b</l><l>1</l></block><block s="doWarp"><script><block s="doRepeat"><block s="reportDifference"><block s="reportListLength"><block var="a"/></block><l>1</l></block><script><block s="doSetVar"><l>c</l><block s="reportTextSplit"><block s="reportListItem"><block var="b"/><block var="a"/></block><l>;</l></block></block><block s="gotoXY"><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="c"/></block><l>10</l></block><l>23.63</l></block><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="c"/></block><l>10</l></block><l>23.63</l></block></block><block s="setEffect"><l><option>color</option></l><block s="reportListItem"><l>3</l><block var="c"/></block></block><block s="doSwitchToCostume"><block s="reportSum"><block s="reportListItem"><l>4</l><block var="c"/></block><l>1</l></block></block><block s="doStamp"></block><block s="doChangeVar"><l>b</l><l>1</l></block></script></block></script></block></script></block></script><scripts><script x="129.000001" y="446.00000099999994"><block s="clear"></block></script><script x="73" y="482.99999999999994"><block s="clear"></block></script></scripts></block-definition></blocks><variables><variable name="X"><l>20</l></variable><variable name="Y"><l>20</l></variable><variable name="color effect"><l>0</l></variable><variable name="join"><l>20;20;0;1;-</l></variable><variable name="erase all"><l>1</l></variable></variables></project><media name="Online Pixels Drawing" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>