<snapdata remixID="14420579"><project name="Villageon" app="Snap! 10.7.2, https://snap.berkeley.edu" version="2"><notes>Made for a collaboration with awdeni.&#xD;&#xD;https://forum.snap.berkeley.edu/t/collaborate-i-need-help/19600</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAiVJREFUeF7t0sEJACAAAzHdf+gKLnGfdIHCkbttxxSIClwAo/JufwEAQUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrfOYAMpAUATPM7B5CBtACAaX7nADKQFgAwze8cQAbSAgCm+Z0DyEBaAMA0v3MAGUgLAJjmdw4gA2kBANP8zgFkIC0AYJrf+QOC496obByqTwAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="Villageon"><notes>Made for a collaboration with awdeni.&#xD;&#xD;https://forum.snap.berkeley.edu/t/collaborate-i-need-help/19600</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="costume from text %&apos;text&apos; size %&apos;size&apos;" type="reporter" category="looks"><header></header><code></code><translations>de:Kostüm aus Text _ Größe _&#xD;pt:um traje com o texto _ de tamanho _&#xD;ca:vestit amb el text _ i mida _&#xD;</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><l>pen state</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>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></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><block s="clear"></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="write"><block var="text"/><block var="size"/></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block s="reportJoinWords"><list><block var="text"/></list></block></list></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><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="doIf"><block var="pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="costume %&apos;cst&apos; with background RGBA %&apos;rgb&apos; padding %&apos;padding&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%n">200</input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>old</l><l>clr</l><l>new</l><l>x</l><l>y</l><l>dir</l><l>trails</l><l>flat</l><l>old size</l><l>old pen state</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>dir</l><block s="direction"></block></block><block s="doSetVar"><l>old</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>clr</l><block s="getPenAttribute"><l><option>r-g-b-a</option></l></block></block><block s="doSetVar"><l>flat</l><block s="reportGlobalFlag"><l><option>flat line ends</option></l></block></block><block s="doSetVar"><l>old size</l><block s="getPenAttribute"><l><option>size</option></l></block></block><block s="doSetVar"><l>old pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><block s="reportMonadic"><l><option>neg</option></l><block s="reportVariadicSum"><list><block s="reportQuotient"><block s="reportGetImageAttribute"><l><option>width</option></l><block var="cst"/></block><l>2</l></block><block var="padding"/></list></block></block><l>0</l></block><block s="setHeading"><l>90</l></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><l><bool>true</bool></l></block><block s="setSize"><block s="reportVariadicSum"><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="cst"/></block><block s="reportVariadicProduct"><list><block var="padding"/><l>2</l></list></block></list></block></block><block s="setPenColorDimension"><l><option>r-g-b(-a)</option></l><block var="rgb"/></block><block s="down"></block><block s="setXPosition"><block s="reportMonadic"><l><option>neg</option></l><block s="xPosition"></block></block></block><block s="up"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="doGotoObject"><l><option>center</option></l></block><block s="gotoXY"><block s="reportMonadic"><l><option>neg</option></l><block s="reportGet"><l><option>center x</option></l></block></block><block s="reportMonadic"><l><option>neg</option></l><block s="reportGet"><l><option>center y</option></l></block></block></block><block s="doStamp"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSetVar"><l>new</l><block s="reportPenTrailsAsCostume"></block></block><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="new"/><block s="reportIfElse"><block s="reportListContainsItem"><block s="reportTextSplit"><block s="reportAttributeOf"><l><option>costume name</option></l><l>Sprite</l></block><l><option>word</option></l></block><l>button</l></block><block s="reportAttributeOf"><l><option>costume name</option></l><l>Sprite</l></block><block s="reportJoinWords"><list><block s="reportAttributeOf"><l><option>costume name</option></l><l>Sprite</l></block><l> button</l></list></block></block></list></block><block s="clear"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="old"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="setPenColorDimension"><l><option>r-g-b(-a)</option></l><block var="clr"/></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="flat"/></block><block s="setSize"><block var="old size"/></block><block s="doIf"><block var="old pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="new"/></block></script><scripts><script x="255" y="186.19999999999996"><custom-block s="costume %s with background RGBA %n padding %n"><custom-block s="costume %s with background RGBA %n padding %n"><custom-block s="costume from text %s size %n"><l>Snap!</l><l>36</l></custom-block><l>200</l><l>10</l></custom-block><l>100</l><l>2</l></custom-block></script><comment x="248.685546875" y="121.03333333333337" w="106" collapsed="false">Use this block to make &quot;clickable&quot; buttons:</comment></scripts></block-definition><block-definition s="export costume %&apos;costume&apos;" type="command" category="looks"><header></header><code></code><translations>pl:eksportuj kostium _&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="costume"/><l></l></list></block></script><list></list></block></script></block-definition><block-definition s="set name of costume %&apos;costume&apos; to %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations>pl:ustaw nazwę kostiumu _ na _&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%s">thing</input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block var="name"/></list></block></script><list></list></block></script></block-definition><block-definition s="$camera snap" type="reporter" category="sensing"><comment x="0" y="0" w="216" collapsed="false">takes a snapshot with the webcam and reports it as a new costume, or zero if the user cancels</comment><header></header><code></code><translations>pt:$camera a imagem actual do vídeo&#xD;pl:$camera zdjęcie&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l><l>pic</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>mda_snap</l><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="callback"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="export costume list %&apos;costumes&apos; base name %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations>pl:eksportuj listę kostiumu _ nazwa _&#xD;</translations><inputs><input type="%l"></input><input type="%s">frame</input></inputs><script><block s="doDeclareVariables"><list><l>count</l></list></block><block s="doSetVar"><l>count</l><block s="reportListAttribute"><l><option>length</option></l><block var="costumes"/></block></block><block s="doForEach"><l>item</l><block s="reportListAttribute"><l><option>reverse</option></l><block var="costumes"/></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="item"/><block s="reportJoinWords"><list><block var="name"/><l> (</l><block var="count"/><l>)</l></list></block></list></block><block s="doChangeVar"><l>count</l><l>-1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="count"/><l>10</l></block><l>0</l></list></block><script><block s="doWait"><l>1</l></block></script><list></list></block></script></block></script></block-definition><block-definition s="grayscales of %&apos;costume&apos;" type="reporter" category="looks"><header></header><code></code><translations>pl:_ w skali szarości&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doReport"><block s="reportReshape"><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicProduct"><list><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block><block s="reportNewList"><list><l>.3</l><l>.6</l><l>.1</l></list></block></list></block></block></block><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block></list></block></block></script></block-definition><block-definition s="%&apos;filter&apos; filter on %&apos;costume&apos; alpha %&apos;alpha&apos;" type="reporter" category="looks"><header></header><code></code><translations>pl:filtr _ na _ kanał alfa _&#xD;</translations><inputs><input type="%s" readonly="true">blur<options>blur&#xD;sharpen&#xD;outline&#xD;emboss&#xD;edge={&#xD;left&#xD;right&#xD;top&#xD;bottom&#xD;}&#xD;Gauss</options></input><input type="%s" readonly="true">current<options>§_costumesMenu</options></input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>kernel</l><l>pixels</l><l>channels</l></list></block><block s="doSetVar"><l>kernel</l><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block s="reportListAttribute"><l><option>rank</option></l><block var="filter"/></block><l>1</l></list></block><block var="filter"/><custom-block s="filter %s"><block var="filter"/></custom-block></block></block><block s="doSetVar"><l>pixels</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block><block s="doIf"><block var="alpha"/><script><block s="doSetVar"><l>channels</l><l>4</l></block></script><list><l><bool>true</bool></l><script><block s="doSetVar"><l>channels</l><l>3</l></block><block s="doSetVar"><l>pixels</l><block s="reportVariadicProduct"><list><block var="pixels"/><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l></list></block></list></block><comment w="137" collapsed="true">remove alpha channel</comment></block></script></list></block><block s="doReport"><block s="reportNewCostume"><custom-block s="convolve matrix %l * kernel %l"><block s="reportReshape"><block var="pixels"/><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block><block var="channels"/></list></block><block var="kernel"/></custom-block><l></l><l></l></block></block></script></block-definition><block-definition s="filter %&apos;name&apos;" type="reporter" category="looks"><header></header><code></code><translations>pl:filtr _&#xD;</translations><inputs><input type="%s" readonly="true">blur<options>blur&#xD;sharpen&#xD;outline&#xD;emboss&#xD;edge={&#xD;left&#xD;right&#xD;top&#xD;bottom&#xD;}&#xD;Gauss</options></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="name"/><l>sharpen</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>0</l><l>-1</l><l>0</l><l>-1</l><l>5</l><l>-1</l><l>0</l><l>-1</l><l>0</l></custom-block></block></script><list><block s="reportVariadicEquals"><list><block var="name"/><l>outline</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>-1</l><l>-1</l><l>-1</l><l>8</l><l>-1</l><l>-1</l><l>-1</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>emboss</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-2</l><l>-1</l><l>0</l><l>-1</l><l>1</l><l>1</l><l>0</l><l>1</l><l>2</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>left</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>0</l><l>1</l><l>-2</l><l>0</l><l>2</l><l>-1</l><l>0</l><l>1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>right</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>0</l><l>-1</l><l>2</l><l>0</l><l>-2</l><l>1</l><l>0</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>top</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>-1</l><l>-2</l><l>-1</l><l>0</l><l>0</l><l>0</l><l>1</l><l>2</l><l>1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>bottom</l></list></block><script><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>1</l><l>2</l><l>1</l><l>0</l><l>0</l><l>0</l><l>-1</l><l>-2</l><l>-1</l></custom-block></block></script><block s="reportVariadicEquals"><list><block var="name"/><l>gauss</l></list></block><script><block s="doReport"><block s="reportQuotient"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l><l>4</l><l>1</l></list></block><block s="reportNewList"><list><l>4</l><l>16</l><l>26</l><l>16</l><l>4</l></list></block><block s="reportNewList"><list><l>7</l><l>26</l><l>41</l><l>26</l><l>7</l></list></block><block s="reportNewList"><list><l>4</l><l>16</l><l>26</l><l>16</l><l>4</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l><l>4</l><l>1</l></list></block></list></block><l>273</l></block></block></script></list></block><block s="doReport"><custom-block s="kernel %br %n %n %n %br %n %n %n %br %n %n %n"><l>0.0625</l><l>0.125</l><l>0.0625</l><l>0.125</l><l>0.25</l><l>0.125</l><l>0.0625</l><l>0.125</l><l>0.0625</l><comment w="80" collapsed="false">blur</comment></custom-block></block></script></block-definition><block-definition s="rectangle costume %&apos;color&apos; width: %&apos;w&apos; height: %&apos;h&apos;" type="reporter" category="looks"><comment x="0" y="0" w="204.00000000000023" collapsed="false">make a rectangle costume with the given color, width and height. The color can be either specified by the color picker from the input slot, or it can be a list of r-g-b-a values.</comment><header></header><code></code><translations>pl:prostokątny kostium _ szerokość: _ wysokość: _&#xD;</translations><inputs><input type="%clr"></input><input type="%n">20</input><input type="%n">60</input></inputs><script><block s="doIf"><block s="reportIsA"><block var="color"/><l><option>list</option></l></block><script><block s="doSetVar"><l>color</l><block s="reportApplyExtension"><l>clr_rgba(r, g, b, a)</l><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>length</option></l><block var="color"/></block><l>4</l></list></block><block s="reportConcatenatedLists"><list><block s="reportReshape"><block var="color"/><list><l>3</l></list></block><block s="reportNewList"><list><l>255</l></list></block></list></block><block s="reportReshape"><block var="color"/><list><l>4</l></list></block></block></block></block></script><list></list></block><block s="doReport"><block s="reportNewCostume"><block s="reportReshape"><block s="reportVariadicProduct"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportApplyExtension"><l>clr_channel(clr, rgba)</l><list><block var="color"/><l></l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>r</l><l>g</l><l>b</l><l>a</l></list></block></block><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l><l>255</l></list></block></list></block><list><block s="reportVariadicProduct"><list><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="h"/></block><l>1</l></list></block><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="w"/></block><l>1</l></list></block></list></block><l>4</l></list></block><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="w"/></block><l>1</l></list></block><block s="reportVariadicMax"><list><block s="reportMonadic"><l><option>abs</option></l><block var="h"/></block><l>1</l></list></block></block></block></script></block-definition><block-definition s="kernel $nl %&apos;a1&apos; %&apos;b1&apos; %&apos;c1&apos; $nl %&apos;a2&apos; %&apos;b2&apos; %&apos;c2&apos; $nl %&apos;a3&apos; %&apos;b3&apos; %&apos;c3&apos;" type="reporter" category="lists"><header></header><code></code><translations>pl:jądro _ _ _ _ _ _ _ _ _ _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportReshape"><block s="reportEnvironment"><l><option>inputs</option></l></block><list><l>3</l><l>3</l></list></block></block></script></block-definition><block-definition s="convolve matrix %&apos;matrix&apos; * kernel %&apos;kernel&apos;" type="reporter" category="operators"><header></header><code></code><translations>pl:przemnóż macierz _ * jądro _&#xD;</translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>padding</l><l>channels</l><l>every coordinate</l><l>channel indices</l></list></block><block s="doSetVar"><l>padding</l><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block></block><l>1</l></block><l>2</l></block><comment w="119" collapsed="false">assume odd dimensions, typically 3x3 or 5x5</comment></block><block s="doSetVar"><l>channels</l><block s="reportListItem"><l>3</l><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block></block></block><block s="doSetVar"><l>every coordinate</l><block s="reportCrossproduct"><block s="reportNumbers"><l>1</l><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block></block></block></block></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="channels"/><l>0</l></list></block><script><block s="doSetVar"><l>channel indices</l><block s="reportNewList"><list><block s="reportReshape"><block s="reportNumbers"><l>1</l><block var="channels"/></block><list><block s="reportListAttribute"><l><option>length</option></l><block var="every coordinate"/></block><block var="channels"/></list></block></list></block></block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block><l>3</l></list></block><script><block s="doSetVar"><l>kernel</l><block s="reportReshape"><custom-block s="stretch %l by %n"><block s="reportListAttribute"><l><option>flatten</option></l><block var="kernel"/></block><block var="channels"/></custom-block><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="kernel"/></block><block s="reportNewList"><list><block var="channels"/></list></block></list></block></block></block></script><list></list><comment w="90" collapsed="false">reshape the kernel to match the input matrix&apos;s channels, if any</comment></block></script><script><block s="doSetVar"><l>channel indices</l><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportReshape"><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicSum"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportListAttribute"><l><option>columns</option></l><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>columns</option></l><block s="reportNumbers"><block s="reportDifference"><block var="every coordinate"/><block var="padding"/></block><block s="reportVariadicSum"><list><block var="every coordinate"/><block var="padding"/></list></block></block></block><block var="channel indices"/></list></block></block><block var="matrix"/></block><block var="kernel"/></list></block></block></block></block></block><block s="reportListAttribute"><l><option>dimensions</option></l><block var="matrix"/></block><comment w="80" collapsed="false">for every padded pixel create a partial copy of the input, item-multiply it with the kernel and take its overall sum (∑)</comment></block></block></script></block-definition><block-definition s="stretch %&apos;data&apos; by %&apos;factor&apos;" type="reporter" category="lists"><header></header><code></code><translations>pl:rozciągnij _ o _&#xD;de:strecke _ um _&#xD;</translations><inputs><input type="%l"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportQuotient"><block s="reportNumbers"><l>1</l><block s="reportVariadicProduct"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><block var="factor"/></list></block></block><block var="factor"/></block></block><block var="data"/></block></block></script></block-definition><block-definition s="compress %&apos;data&apos; by %&apos;factor&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:stauche _ um _&#xD;</translations><inputs><input type="%l" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doReport"><custom-block s="stretch %l by %n"><block var="data"/><block s="reportQuotient"><l>1</l><block var="factor"/></block></custom-block></block></script></block-definition><block-definition s="write %&apos;text&apos; size %&apos;sz&apos; stats %&apos;stats&apos;" type="command" category="pen"><comment x="0" y="0" w="211.66666666666669" collapsed="false">Writes text onto the stage, and allows extra styling. You don&apos;t have to add stats.&#xD;&#xD;Created by Tethrarxitet!&#xD;pic goes hard feel free to screenshot</comment><header></header><code></code><translations>es:escribir _ con tamaña _ e información _&#xD;pt:escreva _ com tamanho _ e edita _&#xD;fr:écrire _ avec la taille _ et les modificateurs _&#xD;ru:напишите _ с размером _ и модами _&#xD;</translations><inputs><input type="%s">Hello!</input><input type="%n">12</input><input type="%n" readonly="true"></input></inputs><script><block s="write"><block var="text"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="stats"/><l>0</l></list></block><block var="sz"/><block s="reportJoinWords"><list><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportTypeOf"><block s="reportListItem"><l>2</l><block var="stats"/></block></block><l>Boolean</l></list></block><block s="reportIfElse"><block s="reportListItem"><l>2</l><block var="stats"/></block><l>bold </l><l></l></block><block s="reportJoinWords"><list><block s="reportListItem"><l>2</l><block var="stats"/></block><l> </l></list></block></block><block s="reportIfElse"><block s="reportListItem"><l>3</l><block var="stats"/></block><l>italic </l><l></l></block><block var="sz"/><l>px </l><block s="reportListItem"><l>1</l><block var="stats"/></block><l>,</l></list></block></block></block></script><scripts><script x="8.333333333333334" y="241.05555555555455"><custom-block s="write %s size %n stats %n"><l>Hello!</l><l>12</l><l></l></custom-block></script><script x="8.333333333333334" y="278.38888888888783"><custom-block s="text costume %s size %n stats %n"><l>Hello!</l><l>12</l><l></l></custom-block></script><script x="8.333333333333334" y="309.7222222222213"><custom-block s="font %s %br bold %b %br italic %b"><l>monospace</l><l/><l/></custom-block></script><script x="8.333333333333334" y="364.222222222221"><custom-block s="font %s %br weight %n %br italic %b"><l>monospace</l><l>500</l><l/></custom-block></script><comment x="249.9980468749998" y="253.0833333333322" w="90" collapsed="false">Dependencies and blocks that depend on this</comment></scripts></block-definition><block-definition s="text costume %&apos;text&apos; size %&apos;size&apos; stats %&apos;stats&apos;" type="reporter" category="pen"><header></header><code></code><translations>es:disfraz de texto _ tamaño _ e información _&#xD;pt:traje de texto _ com tamanho _ e edita _&#xD;fr:costume de texte _ avec taille _ et modificateurs _&#xD;ru:текст костюм _ с размером _ и модами _&#xD;</translations><inputs><input type="%s">Hello!</input><input type="%n">12</input><input type="%n" readonly="true"></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><l>pen state</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>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></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><block s="clear"></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><custom-block s="write %s size %n stats %n"><block var="text"/><block var="size"/><block var="stats"/></custom-block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block s="reportJoinWords"><list><block var="text"/></list></block></list></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><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="doIf"><block var="pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="font %&apos;font&apos; $nl bold %&apos;it&apos; $nl italic %&apos;bd&apos;" type="reporter" category="pen"><comment x="0" y="0" w="173.33333333333334" collapsed="false">Creates a list of stats for the new write block to use.&#xD;&#xD;Created by Tethrarxitet!&#xD;tamale</comment><header></header><code></code><translations>pt:nome da fonte _ _ texto em negrito? _ _ oblíquo? _&#xD;es:nombre de fuente _ _ ¿negrita? _ _ ¿oblicuo? _&#xD;fr:nom de la police _ _ police en gras ? _ _ oblique ? _&#xD;ru:шриф _ _ жирный? _ _ курсив? _&#xD;</translations><inputs><input type="%s">monospace</input><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="font"/><block var="it"/><block var="bd"/></list></block></block></script></block-definition><block-definition s="font %&apos;font&apos; $nl weight %&apos;it&apos; $nl italic %&apos;bd&apos;" type="reporter" category="pen"><comment x="0" y="0" w="173.33333333333334" collapsed="false">Creates a list of stats for the new write block to use.&#xD;&#xD;Created by Tethrarxitet!&#xD;tamale</comment><header></header><code></code><translations>es:nombre de la fuente _ _ espesor _ _ ¿oblicuo? _&#xD;pt:nome da fonte _ _ grossura _ _ oblíquo? _&#xD;fr:nom de la police _ _ épaisseur _ _ oblique ? _&#xD;ru:шриф _ _ жирность _ _ курсив? _&#xD;</translations><inputs><input type="%s">monospace</input><input type="%n">500</input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="font"/><block var="it"/><block var="bd"/></list></block></block></script></block-definition><block-definition s="outline color: %&apos;clr&apos; width: %&apos;w&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%clr" initial="1">5</input><input type="%n" initial="1">5</input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>padding</l><l>color</l><l>halo</l><l>empty</l></list></block><block s="doSetVar"><l>padding</l><block var="w"/></block><block s="doSetVar"><l>empty</l><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>0</l></list></block></block><block s="doSetVar"><l>color</l><block s="reportVariadicProduct"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportApplyExtension"><l>clr_channel(clr, rgba)</l><list><block var="clr"/><l></l></list></block></autolambda><list></list></block><block s="reportNewList"><list><l>r</l><l>g</l><l>b</l><l>a</l></list></block></block><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l><l>255</l></list></block></list></block></block><block s="doSetVar"><l>costume</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="clear"></block><block s="doSwitchToCostume"><block s="reportNewCostume"><block s="reportReshape"><l>0</l><block s="reportVariadicSum"><list><block s="reportNewList"><list><block s="reportGetImageAttribute"><l><option>height</option></l><l><option>current</option></l></block><block s="reportGetImageAttribute"><l><option>width</option></l><l><option>current</option></l></block></list></block><block s="reportVariadicProduct"><list><block var="padding"/><l>2</l></list></block></list></block></block><l></l><l></l></block></block><block s="doTellTo"><block s="newClone"><l><option>myself</option></l></block><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="costume"/></block><block s="doSetVar"><l><option>my rotation style</option></l><l>0</l></block><block s="doWarp"><script><block s="doRepeat"><l>36</l><script><block s="forward"><block var="padding"/></block><block s="doPasteOn"><l></l></block><block s="forward"><block s="reportMonadic"><l><option>neg</option></l><block var="padding"/></block></block><block s="turn"><l>10</l></block></script></block></script></block><block s="doCutFrom"><l></l></block><block s="removeClone"></block></script><list></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block><block s="doSwitchToCostume"><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><block s="reportGetImageAttribute"><l><option>pixels</option></l><l><option>current</option></l></block></block></block><l>1</l></list></block><block var="empty"/><block var="color"/></block></block><block s="doSetVar"><l>halo</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSwitchToCostume"><block var="costume"/></block><block s="doReport"><block var="halo"/></block></script></block-definition><block-definition s="halo color: %&apos;clr&apos; width: %&apos;w&apos; while %&apos;test&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%clr" initial="1">2</input><input type="%n" initial="1">5</input><input type="%boolUE" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>halo</l></list></block><block s="doSetVar"><l>costume</l><custom-block s="outline color: %clr width: %n"><block var="clr"/><block var="w"/></custom-block></block><block s="doSetVar"><l>halo</l><block s="newClone"><l><option>Turtle sprite</option></l></block></block><block s="doTellTo"><block var="halo"/><block s="reifyScript"><script><block s="doSwitchToCostume"><block var="costume"/></block><block s="doSetVar"><l><option>my anchor</option></l><l></l></block></script><list></list></block><list><block s="reportGet"><l><option>self</option></l></block></list></block><block s="doWaitUntil"><block s="reportNot"><block s="evaluate"><block var="test"/><list></list></block></block></block><block s="doTellTo"><block var="halo"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="halo color: %&apos;clr&apos; width: %&apos;w&apos; for %&apos;time&apos; secs" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%clr" initial="1">2</input><input type="%n" initial="1">5</input><input type="%n" initial="1">2</input></inputs><script><block s="doDeclareVariables"><list><l>end</l></list></block><block s="doSetVar"><l>end</l><block s="reportVariadicSum"><list><block s="reportDate"><l><option>time in milliseconds</option></l></block><block s="reportVariadicProduct"><list><block var="time"/><l>1000</l></list></block></list></block></block><custom-block s="halo color: %clr width: %n while %boolUE"><block var="clr"/><block var="w"/><block s="reportVariadicLessThan"><list><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="end"/></list></block></custom-block></script></block-definition><block-definition s="Post to smerge..." type="command" category="other"><header></header><code></code><translations>de:Poste auf smerge...&#xD;</translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = window.world.root().children[0];&#xD;&#xD;new DialogBoxMorph(&#xD;	this,&#xD; function(message){&#xD;   var url = "https://smerge.imp.fu-berlin.de/sync/9df3f1a0-afe3-4956-8cbe-619b8a164282?ancestor=5978";&#xD;   if (window.newUrl){&#xD;      var url = window.newUrl;&#xD;   }&#xD;   url += "&amp;message="+message;&#xD;   var data = ide.getProjectXML();&#xD;   var r =  new XMLHttpRequest();&#xD;   r.open("POST", url, true);&#xD;   r.setRequestHeader("Content-Type", "application/xml");&#xD;		 r.onreadystatechange = function () {&#xD;  	  if(r.readyState === 4 &amp;&amp; r.status === 200) {&#xD;				   ide.showMessage("exported");&#xD;    			window.newUrl = JSON.parse(r.response)["url"];&#xD;      }&#xD;   }&#xD;   r.send(data);&#xD;   },&#xD;       this&#xD;    ).prompt(&#xD;      "What changes have you made?",&#xD;      "",&#xD;      window.world,&#xD;      null);</l></block><list></list></block></script></block-definition><block-definition s="block to costume $nl label: %&apos;a&apos; $nl RGB: %&apos;b&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>c</l><l>d</l></list></block><block s="doSetVar"><l>c</l><block s="reportConcatenatedLists"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><l></l><l>0.75</l></list></block></autolambda><list></list></block><custom-block s="all but last of %l"><block var="b"/></custom-block></block><block s="reportNewList"><list><block s="reportListItem"><l><option>last</option></l><block var="b"/></block></list></block></list></block></block><block s="setPenColorDimension"><l><option>transparency</option></l><l>0</l></block><block s="doReport"><custom-block s="costume %s with background RGBA %n padding %n"><custom-block s="costume %s with background RGBA %n padding %n"><custom-block s="costume from text %s size %n"><block var="a"/><block s="reportJoinWords"><list><block var="blkF_S"/><l>px Helvetica, sans-serif</l></list></block></custom-block><block var="b"/><l>2</l></custom-block><block var="c"/><l>1</l></custom-block></block></script></block-definition><block-definition s="reverse %&apos;l&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="l"/></block><block s="reportDifference"><block var="ind"/><l>1</l></block></block><block var="l"/></block></autolambda><list><l>_</l><l>ind</l></list></block><block var="l"/></block></block></script></block-definition><block-definition s="all but last of %&apos;l&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><custom-block s="reverse %l"><block s="reportCDR"><custom-block s="reverse %l"><block var="l"/></custom-block></block></custom-block></block></script></block-definition><block-definition s="Blocks %&apos;category&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="gotoXY"><l>0</l><l>0</l></block><block s="doDeclareVariables"><list><l>cOffs</l><l>cost</l></list></block><block s="doSetVar"><l>cOffs</l><block s="reportDifference"><block s="reportQuotient"><block s="reportDifference"><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block><block s="reportGetImageAttribute"><l><option>height</option></l><l><option>current</option></l></block></block><l>2</l></block><l>90</l></block></block><block s="doForEach"><l>blk</l><custom-block s="value at key %s of %l"><l>blocks</l><custom-block s="value at key %s of %l"><block var="category"/><block var="Blocks"/></custom-block></custom-block><script><block s="doSetVar"><l>Clone</l><block s="newClone"><l><option>myself</option></l></block></block><block s="doTellTo"><block var="Clone"/><block s="reifyScript"><script><block s="doSetVar"><l>cost</l><custom-block s="block to costume %br label: %txt %br RGB: %l"><block s="reportListItem"><l>1</l><block var="blk"/></block><custom-block s="value at key %s of %l"><l>color</l><custom-block s="value at key %s of %l"><block var="category"/><block var="Blocks"/></custom-block></custom-block></custom-block></block><block s="doChangeVar"><l>Clone</l><l>1</l></block><block s="doSetVar"><l>my code</l><block s="reportListItem"><l>2</l><block var="blk"/></block></block><block s="doForEach"><l>key</l><custom-block s="keys of %l"><custom-block s="value at key %s of %l"><l>blocks</l><custom-block s="value at key %s of %l"><block var="category"/><block var="Blocks"/></custom-block></custom-block></custom-block><script><block s="doForEach"><l>item</l><block s="reportTextSplit"><block var="key"/><l> </l></block><script><block s="doIf"><block s="reportVariadicIsIdentical"><list><block var="item"/><l>%n</l></list></block><script><block s="doSetVar"><l>cost</l><custom-block s="overlay %s over %s offset x: %n y: %n"><custom-block s="rectangle costume %clr width: %n height: %n"><color>246,246,246,1</color><l>30</l><l>20</l></custom-block><block var="cost"/><l></l><l></l></custom-block></block></script><list></list></block></script></block></script></block><block s="doSwitchToCostume"><block var="cost"/></block><block s="doSetVar"><l>cost</l><custom-block s="block to costume %br label: %txt %br RGB: %l"><block s="reportListItem"><l>1</l><block var="blk"/></block><custom-block s="value at key %s of %l"><l>color</l><custom-block s="value at key %s of %l"><block var="category"/><block var="Blocks"/></custom-block></custom-block></custom-block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="Clones"/><l>0</l></list></block><script></script><list></list></block><block s="gotoXY"><l>-189</l><block var="cOffs"/></block><block s="doChangeVar"><l>cOffs</l><block s="reportDifference"><l>-5</l><block s="reportGetImageAttribute"><l><option>height</option></l><l><option>current</option></l></block></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportMouseDown"></block><block s="reportAskFor"><l>Sprite(12)</l><block s="reifyReporter"><autolambda><block s="reportVariadicAnd"><list><block s="reportTouchingObject"><l>Sprite</l></block><block s="reportTouchingColor"><color>246,246,246,1</color></block></list></block></autolambda><list></list></block><list></list></block></list></block><script></script><list></list></block></script><list></list></block><list><block var="blk"/></list></block><block s="doChangeVar"><l>Clones</l><l>1</l></block></script></block></script><scripts><script x="406.58056640625" y="181.20000000000005"><block s="reportDifference"><block s="reportQuotient"><block s="reportDifference"><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block><block s="reportGetImageAttribute"><l><option>height</option></l><l><option>current</option></l></block></block><l>2</l></block><l>90</l></block></script><script x="629.506103515625" y="281.6666666666669"><custom-block s="keys of %l"><l/></custom-block></script><script x="621.506103515625" y="385.8333333333334"><custom-block s="value at key %s of %l"><l></l><block var="Blocks"/></custom-block></script></scripts></block-definition><block-definition s="listify %&apos;jsonString&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:os dados JSON _ em formato de lista&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="jsonString"/><l><option>json</option></l></block></block></script></block-definition><block-definition s="value at key %&apos;key&apos; of %&apos;lst&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o valor com chave _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>each item</l><block var="lst"/><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="each item"/></block><block var="key"/></list></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="each item"/></block></block></script><list></list></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="key: %&apos;key&apos; value: %&apos;value&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:um par (chave: _ , valor: _ )&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="key"/><block var="value"/></list></block></block></script></block-definition><block-definition s="keys of %&apos;l&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="l"/></block></block></script></block-definition><block-definition s="Interpret lisp %&apos;Lisp&apos; on %&apos;sprite&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input><input type="%obj" initial="1"></input></inputs><script><block s="doRun"><block s="reifyScript"><script><block s="doTellTo"><block var="sprite"/><block s="reifyScript"><script><block s="doRun"><custom-block s="parse code %code to blocks"><block var="Lisp"/></custom-block><list></list></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportIsA"><block var="Lisp"/><l><option>script</option></l></block><block s="reportIsA"><block var="Lisp"/><l><option>command</option></l></block></list></block><script><block s="doTellTo"><block var="sprite"/><block s="reifyScript"><script><block s="bubble"><block s="reportJoinWords"><list><l>ERROR:</l><l>LISP INPUT IS NOT LISP</l></list></block></block></script><list></list></block><list></list></block></script><list></list></block></script><scripts><script x="411.03925781250035" y="147.50000000000017"><block var="Blocks"/></script><script x="398.23251953125026" y="157.0499999999999"><block s="reportVariadicEquals"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></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></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></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="%&apos;a&apos; is in palette?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true" initial="1"><options>§_objectsMenuWithSelf</options></input></inputs><script><block s="doReport"><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportAttributeOf"><l>inPalette</l><block var="a"/></block><l>error</l><block s="reportBoolean"><l><bool>true</bool></l></block></custom-block></block></script></block-definition><block-definition s="special %&apos;tags&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%mult%s" initial="1"></input></inputs></block-definition><block-definition s="%&apos;color&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%clr" initial="1"></input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block s="reportTextSplit"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><l>6</l><block s="reportDifference"><block s="reportTextAttribute"><l><option>length</option></l><block s="reportJoinWords"><list><block var="color"/></list></block></block><l>1</l></block></block><block var="color"/></block></block><l>,</l></block></block></block></script></block-definition><block-definition s="overlay %&apos;c1&apos; over %&apos;c2&apos; offset x: %&apos;x&apos; y: %&apos;y&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true" initial="1"><options>§_costumesMenu</options></input><input type="%s" readonly="true" initial="1"><options>§_costumesMenu</options></input><input type="%n" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>last</l><l>result</l></list></block><block s="doSetVar"><l>last</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSwitchToCostume"><block var="c2"/></block><block s="doTellTo"><block s="newClone"><l><option>myself</option></l></block><block s="reifyScript"><script><block s="changeXPosition"><block var="X"/></block><block s="changeYPosition"><block var="Y"/></block><block s="doSwitchToCostume"><block var="C1"/></block><block s="doPasteOn"><block var="SPR"/></block><block s="removeClone"></block></script><list><l>X</l><l>Y</l><l>C1</l><l>SPR</l></list></block><list><block var="x"/><block var="y"/><block var="c1"/><block s="reportGet"><l><option>self</option></l></block></list></block><block s="doSetVar"><l>result</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSwitchToCostume"><block var="last"/></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="costume from script: %&apos;script&apos;" type="reporter" category="looks"><comment x="0" y="0" w="259.8173828125" collapsed="false">Turns a ringified script into a script pic that can be used as a costume.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><custom-block s="load script pic costume extension"></custom-block><block s="doReport"><block s="reportApplyExtension"><l>spc_script_to_costume(script)</l><list><block var="script"/></list></block></block></script></block-definition><block-definition s="load script pic costume extension" type="command" category="looks" helper="true"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/microworlds/script-pic-costume.js</l></list></block></script></block-definition><block-definition s="parse code %&apos;code&apos; to blocks" type="reporter" category="operators"><comment x="0" y="0" w="104" collapsed="false">turn LISP syntax text code into blocks</comment><header></header><code></code><translations>de:verwandle Code _ in Blöcke&#xD;</translations><inputs><input type="%code" initial="1">(+ 3 4)</input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block var="code"/><l><option>blocks</option></l></block></block></block></script></block-definition><block-definition s="encode blocks %&apos;script&apos; to text %&apos;lines&apos; pretty" type="reporter" category="operators"><comment x="0" y="0" w="106" collapsed="false">turn blocks into LISP syntax text code.</comment><header></header><code></code><translations>de:verwandle Blöcke _ in Code _ formatiert&#xD;</translations><inputs><input type="%repRing" initial="1"></input><input type="%b" initial="1">true</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportListAttribute"><l></l><block s="reportTextSplit"><block var="script"/><l><option>blocks</option></l></block></block></autolambda><list></list></block><list><block s="reportIfElse"><block var="lines"/><l>lines</l><l>text</l></block></list></block></block></script></block-definition><block-definition s="Debug %&apos;text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input></inputs><script><block s="bubble"><block s="reportJoinWords"><list><l>DEBUG:</l><block var="text"/></list></block></block></script></block-definition><block-definition s="$cloudOutline MQTT connect to %&apos;broker&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="455" collapsed="false">Connect to a broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. username (some brokers need this)&#xD;2. password (some brokers need this)&#xD;3. keepalive (default time is 60 seconds but some brokers need a shorter time)&#xD;4. connection callback (ringed set of scripts to be run when connection is made or remade)&#xD;&#xD;ADVANCED: The brokers offered in the menu are accessed using default ports and  basepaths (if needed).  If accessing other brokers, the complete urls should be formed like this:&#xD;&#xD;siteURL:port/basepath &#xD;e.g mqtt.eclipseprojects.io:443/mqtt&#xD;&#xD;It is possible to have more than one connection to the same broker, for instance, using two different user/pass accounts simultaneously. To do this, add a connection id at the end of the broker:&#xD;&#xD;e.g mqtt.eclipseprojects.io:443/mqtt|1&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%mult%s" expand="username&#xD;password&#xD;keepalive&#xD;connection callback" max="4">​&#xD;​&#xD;60</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l mask %l"><block var="options"/><l/></custom-block></block><block s="doDeclareVariables"><list><l>connection status</l><l>callback</l></list></block><block s="doSetVar"><l>connection status</l><l>connecting</l></block><block s="doSetVar"><l>callback</l><l></l></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>4</l><block var="options"/></block><l><option>command</option></l></block><script><block s="doSetVar"><l>callback</l><block s="reportListItem"><l>4</l><block var="options"/></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>username</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>password</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>keepalive</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_connect(broker,callback,options)</l><list><block var="broker"/><block var="callback"/><block var="options"/></list></block><block s="doWaitUntil"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connecting</l></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connected</l></list></block></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="connection status"/></list></block></script><list></list></block></script></block-definition><block-definition s="$cloudOutline MQTT subscribe to %&apos;broker&apos; topic %&apos;topic&apos; $nl on each message run %&apos;callback&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="306.99999999999943" collapsed="false">Subscribe to a topic on a broker&#xD;&#xD;Make sure you have already run an MQTT connect block before using this one&#xD;&#xD;You should add a script to be run inside he grey ring.&#xD;&#xD;It will be run each time a message is received&#xD;&#xD;If you click on the arrow on the grey ring twice, you can use #1 and #2 inside your script.&#xD;&#xD;#1 will contain the received payload&#xD;&#xD;#2 will contain the received topic name&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. Subscribed QoS (0,1 or 2)  Note this will be downgraded if it exceeds the QoS of the stored message held on the broker &#xD;&#xD;2. Binary mode (boolean) Default (false) - payload is returned as text&#xD;&#xD;If true, payload returned as single column list of values in the range of 0 to 255..  </comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%cmdRing"></input><input type="%mult%s" expand="QoS&#xD;binary mode" max="2">0&#xD;false</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l mask %l"><block var="options"/><block s="reportNewList"><list><l></l><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></custom-block></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_sub(broker,topic,callback,options)</l><list><block var="broker"/><block var="topic"/><block var="callback"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT publish to %&apos;broker&apos; topic %&apos;topic&apos; payload %&apos;payload&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="455" collapsed="false">Publish a message to an MQTT broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. QoS (quality of service 0,1 or 2 - see  https://www.emqx.com/en/blog/introduction-to-mqtt-qos)&#xD;&#xD;2. Retain flag (boolean)&#xD;&#xD;3. Binary mode (boolean).    Default (false) - the payload is published as text&#xD;&#xD;If set to true then payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text.&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%mlt">hello</input><input type="%mult%s" expand="QoS&#xD;retain flag&#xD;binary mode" max="3">0&#xD;false&#xD;false</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l mask %l"><block var="options"/><block s="reportNewList"><list><l></l><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></custom-block></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>retain</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block var="options"/><l><option>json</option></l></block></block></block></block><script><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>list</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportListAttribute"><l><option>json</option></l><block var="payload"/></block></block></script><list></list></block><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>number</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportJoinWords"><list><block var="payload"/></list></block></block></script><list></list></block></script><list></list></block><block s="doApplyExtension"><l>mqt_pub(broker,topic,payload,options)</l><list><block var="broker"/><block var="topic"/><block var="payload"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT unsubscribe from %&apos;broker&apos; topic %&apos;topic&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_unsub(broker,topic)</l><list><block var="broker"/><block var="topic"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT disconnect from %&apos;broker&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">all<options>all&#xD;broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_disconnect(broker)</l><list><block var="broker"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT response %&apos;broker&apos; topic %&apos;topic&apos; $nl reply %&apos;reply&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="292.22207031250036" collapsed="false">Options:&#xD;&#xD;1. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true then subscribed, received payload is returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;2.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name/#</input><input type="%repRing"></input><input type="%mult%s" expand="sub binary mode&#xD;pub binary mode" max="2">false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>callbackTopic</l><l>error</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l mask %l"><block var="options"/><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></custom-block></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %mult%s"><block var="broker"/><block var="topic"/><block s="reifyScript"><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><l>/@</l><block var="received topic"/></list></block><l>0</l></list></block><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list><block var="received payload"/><block var="received topic"/></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list></list></block></block></script><list></list></block><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doSetVar"><l>callbackTopic</l><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="received topic"/><l>@</l></block></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %mult%s"><block var="broker"/><block var="callbackTopic"/><block var="resp"/><list><l></l><l></l><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block></script><list></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl on response run %&apos;callback&apos; %&apos;options&apos;" type="command" category="other"><comment x="0" y="0" w="242.99999999999997" collapsed="false">The options are not required but can be filled if needed.&#xD;&#xD;1. Append response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;2. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true,then the subscribed, received payload is returned as a single column list of values in the range of 0 to 255..  &#xD;&#xD;3.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%cmdRing"></input><input type="%mult%s" expand="append response topic&#xD;sub binary mode&#xD;pub binary mode&#xD;" max="3">true&#xD;false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>error</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l mask %l"><block var="options"/><block s="reportNewList"><list><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></custom-block></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list><block var="received payload"/><block var="received topic"/></list></block></script><list></list></block><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list></list></block></script><list></list></block><block var="error"/></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %mult%s"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l></l><l></l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT example response reporter payload %&apos;payload&apos; topic %&apos;topic&apos;" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">This is a simple echo example.&#xD;Topic can be used to filter the response.</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">hello</input><input type="%txt">name</input></inputs><script><block s="doReport"><block var="payload"/></block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; %&apos;options&apos;" type="reporter" category="other"><comment x="0" y="0" w="343" collapsed="false">The response topic should be a unique value for each call e.g. use timer&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1.  Timeout value - default is 3 seconds&#xD;&#xD;2.  Append response topic (boolean): If true, the response topic is added at the end of the call topic after @ sign. The default condition (true) response topic is added.&#xD;&#xD;3. Sub binary mode (boolean) Default (false) - received payload is returned as text. &#xD;&#xD;If true, subscribed, received payload returned as single column list of values in the range of 0 to 255..  Default (false) - it is returned as text&#xD;&#xD;4.  Pub binary mode (boolean).  Default (false) - the payload is published as text.&#xD;&#xD;If set to true then published payload is expected to be a single column list of values in the 0 to 255 range and is published to the broker as a buffer of bytes.&#xD;&#xD;Note:  If the payload is a list and you don&apos;t set the buffer mode option, it will be automatically be converted into JSON and sent as text&#xD;&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%mult%s" expand="timeout&#xD;append response topic&#xD;sub binary mode&#xD;pub binary mode&#xD;" max="4">3&#xD;true&#xD;false&#xD;false</input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>semaphore</l><l>timer0</l><l>timeout</l><l>informTopic</l><l>topicCall</l></list></block><block s="doSetVar"><l>options</l><custom-block s="sanitise options %l mask %l"><block var="options"/><block s="reportNewList"><list><l></l><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></custom-block></block><block s="doSetVar"><l>semaphore</l><l>0</l></block><block s="doSetVar"><l>timeout</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>number</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><l>3</l></block></block><block s="doSetVar"><l>informTopic</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="options"/></block><l><option>Boolean</option></l></block><block s="reportListItem"><l>2</l><block var="options"/></block><block s="reportBoolean"><l><bool>true</bool></l></block></block></block><block s="doSetVar"><l>resp</l><l>timeout</l></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block var="received payload"/></block><block s="doSetVar"><l>semaphore</l><l>1</l></block></script><list><l>received payload</l><l>received topic</l></list></block><list><l>0</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></custom-block><block s="doIfElse"><block var="informTopic"/><script><block s="doSetVar"><l>topicCall</l><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block></block></script><script><block s="doSetVar"><l>topicCall</l><block var="topic"/></block></script></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %mult%s"><block var="broker"/><block var="topicCall"/><block var="payload"/><list><l>0</l><l>false</l><block s="reportListItem"><l>4</l><block var="options"/></block></list></custom-block><block s="doSetVar"><l>timer0</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doWaitUntil"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="semaphore"/><l>1</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportDifference"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="timer0"/></block><block s="reportVariadicProduct"><list><block var="timeout"/><l>1000</l></list></block></list></block></list></block></block><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block></custom-block><block s="doReport"><block var="resp"/></block></script></block-definition><block-definition s="MQTT Extension Examples" type="command" category="other"><comment x="0" y="0" w="385.9999999999999" collapsed="false">Open (edit) this block to look at examples how to use the MQTT Extension blocks&#xD;&#xD;Background documentation:&#xD;https://github.com/pixavier/mqtt4snap&#xD;&#xD;Last source code version (mqtt.xml and mqttExtension.js):&#xD;https://gitlab.com/cymplecy/Snap/-/tree/master/libraries</comment><header></header><code></code><translations></translations><inputs></inputs><scripts><comment x="489.99999999999955" y="215.19999999999987" w="222.99999999999997" collapsed="false">Step 0: Connect to the broker</comment><comment x="31.33333333333337" y="152.20000000000016" w="239.99999999999997" collapsed="false">PubSub Hello World!</comment><comment x="489.99999999999955" y="271.19999999999953" w="222" collapsed="false">Step 1: Subscribe to a topic</comment><script x="25.33333333333337" y="272.1999999999993"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %mult%s"><l>broker.emqx.io</l><l>name</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>received topic</l></list></block><list></list></custom-block></script><script x="29.33333333333337" y="366.86666666666605"><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %mult%s"><l>broker.emqx.io</l><l>name</l><l>hello</l><list></list></custom-block></script><comment x="492.99999999999955" y="357.1999999999993" w="222" collapsed="false">Step 2: Publish a message</comment><script x="33.99999999999966" y="484.19999999999976"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %mult%s"><l>broker.emqx.io</l><l>name1</l><block s="reifyScript"><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %mult%s"><l>broker.emqx.io</l><l>name2</l><block var="payload"/><list></list></custom-block></script><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="499" y="481.69999999999817" w="220" collapsed="false">Step 1: Activate the responder as a simple subscription</comment><script x="32.999999999999886" y="602.0333333333335"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %mult%s"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><list><l>3</l><l>false</l></list></custom-block><l>2</l></block></script><comment x="500" y="606.6999999999989" w="220" collapsed="false">Step 2: Send a request and wait the answer.</comment><comment x="504.99999999999955" y="131.19999999999993" w="191" collapsed="false">To execute the examples, single click on blocks, following the corresponding steps.</comment><comment x="499.66666666666697" y="756.3666666666654" w="224.00000000000003" collapsed="false">Step 2 bis: Send a request and do not wait for the answer</comment><comment x="24.33333333333337" y="871.1999999999987" w="356.99999999999994" collapsed="false">Synchronous client-server Hello World! with dynamic response topic (timer)</comment><comment x="510.99999999999955" y="930.700000000001" w="220" collapsed="false">Step 1: Activate the responder</comment><script x="34.33333333333337" y="1048.1999999999982"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %mult%s"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><list></list></custom-block><l>2</l></block></script><comment x="510.99999999999955" y="1050.6999999999987" w="219.0000000000002" collapsed="false">Step 2: Send a request (timer acts as idCall) and wait for the answer</comment><comment x="31.999999999999886" y="1138.6999999999982" w="352.0000000000003" collapsed="false">Asynchronous client-server Hello World! with dynamic response topic (timer)</comment><script x="31.999999999999886" y="1207.0333333333313"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %mult%s"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="514.9999999999995" y="1204.6999999999991" w="224.00000000000003" collapsed="false">Step 2 bis: Send a request (timer acts as idCall) and do not wait for the answer</comment><script x="28.99999999999966" y="225.2000000000001"><custom-block s="$cloudOutline MQTT connect to %s %mult%s"><l>broker.emqx.io</l><list></list></custom-block></script><script x="25.33333333333337" y="932.2000000000014"><custom-block s="$cloudOutline MQTT response %s topic %s %br reply %repRing %mult%s"><l>broker.emqx.io</l><l>name/#</l><block s="reifyReporter"><autolambda><custom-block s="$cloudOutline MQTT example response reporter payload %mlt topic %txt"><block var="payload"/><block var="topic"/></custom-block></autolambda><list><l>payload</l><l>topic</l></list></block><list></list></custom-block></script><comment x="26.999999999999886" y="685.6999999999982" w="372.0000000000004" collapsed="false">Asynchronous client-server Hello World! with static response topic (name2)</comment><script x="27.999999999999886" y="751.0333333333324"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %mult%s"><l>broker.emqx.io</l><l>name1</l><l>name2</l><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l>false</l></list></custom-block></script><comment x="28.999999999999886" y="412.36666666666696" w="361.99999999999994" collapsed="false">Synchronous client-server Hello World! with static response topic (name2)</comment></scripts></block-definition><block-definition s="sanitise options %&apos;data&apos; mask %&apos;mask&apos;" type="reporter" category="other" helper="true"><comment x="0" y="0" w="226" collapsed="false">Modify V10 variadic defaults to be able to work for blank and psuedo (false/true) boolean entries&#xD;&#xD;Blank defaults are set as zero width spaces which are removed when block is executed&#xD;&#xD;This is needed for the connect block&#xD;&#xD;The options are then checked to see if they should be boolean and if they are not aready a boolean value, then they are replaced with boolean true if default is text &quot;true&quot;, otherwise boolean false.</comment><header></header><code></code><translations></translations><inputs><input type="%l" initial="1"></input><input type="%l" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>zero width space</l></list></block><block s="doSetVar"><l>zero width space</l><block s="reportUnicodeAsLetter"><l>8203</l></block></block><block s="doSetVar"><l>data</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>text</option></l></block><block s="reportCombine"><block s="reportTextSplit"><block var="value"/><block var="zero width space"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l><l></l></list></block></autolambda><list></list></block></block><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="data"/></block></block><block s="doReport"><block s="reportListAttribute"><l><option>flatten</option></l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicAnd"><list><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="value"/></block><l><option>Boolean</option></l></block><block s="reportNot"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="value"/></block><l><option>Boolean</option></l></block></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="value"/></block><l>true</l></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="reportListItem"><l>1</l><block var="value"/></block></block></autolambda><list><l>value</l><l>index</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><block var="index"/><block var="mask"/></block></list></block></autolambda><list><l>value</l><l>index</l></list></block><block var="data"/></block></block></block></block></script></block-definition><block-definition s="am I clicked?" type="predicate" category="sensing"><comment w="90" collapsed="false">Reports True if Sprite is being clicked</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportMouseDown"></block><block s="reportTouchingObject"><l><option>mouse-pointer</option></l></block></list></block></block></script></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="true" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="3305"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="3306"></list></costumes><sounds><list struct="atomic" id="3307"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="2"><sprite name="Title" idx="1" x="-220" y="111.00000000000003" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="145,26,68,1" pen="tip" id="3312"><wear><ref mediaID="1"></ref></wear><costumes><list struct="atomic" id="3313"></list></costumes><sounds><list struct="atomic" id="3314"></list></sounds><blocks></blocks><variables></variables><scripts><script x="36" y="149.66666666666646"><block s="receiveGo"></block><block s="clearEffects"></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="doSetVar"><l>MenuOff</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>List</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>Tokenized text</l><block s="reportTextSplit"><l>VillageOn</l><l><option>letter</option></l></block></block><block s="doForEach"><l>item</l><block var="Tokenized text"/><script><block s="doWait"><l>0.05</l></block><block s="doAddToList"><block var="item"/><block var="List"/></block><block s="doSwitchToCostume"><custom-block s="costume from text %s size %n"><block s="reportJoinWords"><block var="List"/></block><l>72</l></custom-block></block></script></block><block s="doBroadcast"><l>ButtonShow</l><list></list></block><block s="doUntil"><block var="MenuOff"/><script><block s="doWait"><l>0.05</l></block><block s="changeEffect"><l><option>color</option></l><l>0.5</l></block></script></block></script><script x="184.6650390625" y="465.3333333333329"><block var="item"/></script><script x="80" y="557.1666666666667"><block s="doWarp"><script></script></block></script><script x="37" y="525"><block s="doStopThis"><l><option>this script</option></l></block></script><script x="259" y="438.3333333333329"><block s="changeEffect"><l><option>brightness</option></l><l>25</l></block></script><script x="20" y="10"><block s="receiveMessage"><l>Starting Transition</l><list></list></block><block s="doRepeat"><l>100</l><script><block s="changeEffect"><l><option>ghost</option></l><l>1</l></block></script></block><block s="doStopThis"><l><option>other scripts in sprite</option></l></block></script></scripts></sprite><watcher var="Tokenized text" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="List" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/><watcher var="MenuOff" style="normal" x="10" y="196.000004" color="243,118,29" hidden="true"/><watcher var="Costume" style="normal" x="10" y="217.00000599999998" color="243,118,29" hidden="true"/><sprite name="Start Button" idx="2" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="0" color="22,19,0,1" pen="tip" id="3394"><wear><ref mediaID="2"></ref></wear><costumes><list struct="atomic" id="3395"></list></costumes><sounds><list struct="atomic" id="3396"></list></sounds><blocks></blocks><variables></variables><scripts><script x="93" y="142"><block s="receiveMessage"><l>ButtonShow</l><list></list></block><block s="doUntil"><block s="reportVariadicLessThanOrEquals"><list><block s="getEffect"><l><option>ghost</option></l></block><l>0</l></list></block><script><block s="changeEffect"><l><option>ghost</option></l><l>-1</l></block></script></block><block s="doStamp"></block><block s="gotoXY"><l>-35</l><l>-5</l></block><block s="setColor"><color>22,19,0,1</color></block><block s="write"><l>Play!</l><l>25</l></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSwitchToCostume"><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doWaitUntil"><custom-block s="am I clicked?"></custom-block></block><block s="doBroadcastAndWait"><l>Starting Transition</l><list></list></block><block s="doBroadcast"><l>Game Start</l><list></list></block></script><script x="10" y="10"><block s="receiveGo"></block><block s="clear"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSwitchToCostume"><custom-block s="%s filter on %s alpha %b"><l>emboss</l><custom-block s="rectangle costume %clr width: %n height: %n"><color>54,255,26,1</color><l>100</l><l>60</l></custom-block><l><bool>true</bool></l></custom-block></block><block s="setEffect"><l><option>ghost</option></l><l>100</l></block></script><script x="12.3291015625" y="433.4999999999999"><custom-block s="grayscales of %s"><l></l></custom-block></script><script x="55" y="503.66666666666663"><custom-block s="grayscales of %s"><l><option>Turtle</option></l></custom-block></script><script x="593.6035156250003" y="138"><block var="Costume"/></script><script x="215" y="426.0000000000001"><custom-block s="overlay %s over %s offset x: %n y: %n"><l></l><l></l><l>0</l><l>0</l></custom-block></script><script x="260.5820312499999" y="487.0000000000001"><custom-block s="outline color: %clr width: %n"><color>31,0,5,1</color><l>9</l></custom-block></script><script x="303.3291015624999" y="378.66666666666663"><block s="reportNewCostume"><l/><l>5</l><l>5</l></block></script><script x="245.5820312499999" y="290.0000000000001"><custom-block s="costume from text %s size %n"><l>Play</l><l>72</l></custom-block></script><script x="384" y="12.833333333333371"><custom-block s="costume %s with background RGBA %n padding %n"><l></l><l>90</l><l>5</l></custom-block></script><script x="423" y="231"><custom-block s="halo color: %clr width: %n while %boolUE"><color>25,0,11,1</color><l>5</l><l><bool>false</bool></l></custom-block></script><script x="483" y="86.33333333333337"><block s="receiveMessage"><l>Starting Transition</l><list></list></block><block s="doRepeat"><l>100</l><script><block s="changeEffect"><l><option>ghost</option></l><l>1</l></block></script></block></script></scripts></sprite></sprites></stage><variables><variable name="Tokenized text"><list struct="atomic" id="3502">V,i,l,l,a,g,e,O,n</list></variable><variable name="List"><list struct="atomic" id="3503">V,i,l,l,a,g,e,O,n</list></variable><variable name="MenuOff"><bool>false</bool></variable><variable name="Costume"><ref mediaID="3"></ref></variable></variables></scene></scenes></project><media name="Villageon" app="Snap! 10.7.2, https://snap.berkeley.edu" version="2"><costume name="VillageOn" center-x="0" center-y="52" image="data:image/png;base64,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" mediaID="1"/><costume name="Costume" center-x="50" center-y="30" image="data:image/png;base64,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" mediaID="2"/><costume name="costume" center-x="55" center-y="35" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAABGCAYAAAAtpKGgAAAAAXNSR0IArs4c6QAAAQdJREFUeF7t1QEJADAQw8DOv+gN5uIgryAklD/b7jrOwCkc1+wDF87sVji0W+EKpxpAuftxhUMNoNgtrnCoARS7xRUONYBit7jCoQZQ7BZXONQAit3iCocaQLFbXOFQAyh2iyscagDFbnGFQw2g2C2ucKgBFLvFFQ41gGK3uMKhBlDsFlc41ACK3eIKhxpAsVtc4VADKHaLKxxqAMVucYVDDaDYLa5wqAEUu8UVDjWAYre4wqEGUOwWVzjUAIrd4gqHGkCxW1zhUAModosrHGoAxW5xhUMNoNgtrnCoARS7xRUONYBit7jCoQZQ7BZXONQAit3iCocaQLFbXOFQAyh2iyscagDFfimFRgGouobXAAAAAElFTkSuQmCC" mediaID="3"/></media></snapdata>