<snapdata remixID="14282749"><project name="unicodeUTF8" app="Snap! 10.7.1, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="unicodeUTF8"><notes></notes><palette><category name="MQTT" color="143,0,100,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="cases: if %&apos;test&apos; then %&apos;result&apos; %&apos;more&apos;" type="command" category="control"><comment x="0" y="0" w="262" collapsed="false">Multi-branched conditional.&#xD;&#xD;If the first (Boolean) input is True, then the script in&#xD;the second (C-slot) input is run, and this block stops.&#xD;&#xD;Additional tests can be added by putting one or more&#xD;ELSE IF blocks in the third (variadic) Boolean slot.&#xD;Use the arrowheads to get the number of Boolean&#xD;slots you need.  Each ELSE IF block provides a Boolean&#xD;slot for a condition to test and a script slot for what to do&#xD;if the condition is True.  You can put an ELSE block in&#xD;the last Boolean input to CASES for a script to run if&#xD;all the tests turn out False.&#xD;&#xD;As soon as a condition is True, no further tests are done&#xD;and no further scripts are run.</comment><header></header><code></code><translations>pt:se _ , então _ _&#xD;ca:casos: si _ llavors _ _&#xD;</translations><inputs><input type="%b"></input><input type="%cs"></input><input type="%mult%boolUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doRun"><block var="result"/><list></list></block></script><script><custom-block s="catch %upvar %cs"><l>tag</l><script><block s="doForEach"><l>item</l><block var="more"/><script><block s="doIf"><block s="evaluate"><block var="item"/><list></list></block><script><custom-block s="throw %s"><block var="tag"/></custom-block></script><list></list></block></script></block></script></custom-block></script></block></script></block-definition><block-definition s="else if %&apos;test&apos; then %&apos;action&apos;" type="predicate" category="control"><comment x="0" y="0" w="176" collapsed="false">For use with the CASES block.&#xD;See its help message.</comment><header></header><code></code><translations>pt:senão, se _ , então _&#xD;ca:altrament si _ llavors _&#xD;</translations><inputs><input type="%b"></input><input type="%cs"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doRun"><block var="action"/><list></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="else %&apos;action&apos;" type="predicate" category="control"><comment x="0" y="0" w="176" collapsed="false">For use with the CASES block.&#xD;See its help message.</comment><header></header><code></code><translations>pt:senão, _&#xD;ca:si no _&#xD;</translations><inputs><input type="%cs"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="utf-8 of %&apos;char&apos;" type="reporter" category="operators"><comment x="0" y="0" w="257.49999999999994" collapsed="false">converts a Unicode char into its bytes representation</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>code point</l></list></block><block s="doSetVar"><l>code point</l><block var="char"/></block><block s="doIf"><block s="reportIsA"><block var="char"/><l><option>text</option></l></block><script><block s="doSetVar"><l>code point</l><custom-block s="modified unicode of %s"><block var="char"/></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="code point"/><l>0x80</l></list></block><script><block s="doReport"><block var="code point"/></block></script><list><block s="reportVariadicLessThan"><list><block var="code point"/><l>0x800</l></list></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>6</l></custom-block><block s="reportJoinWords"><list><l>0x1F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0xC0</l></list></block></custom-block><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>0</l></custom-block><block s="reportJoinWords"><list><l>0x3F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0x80</l></list></block></custom-block></list></block></block></script><block s="reportVariadicLessThan"><list><block var="code point"/><l>0x10000</l></list></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>12</l></custom-block><block s="reportJoinWords"><list><l>0x0F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0xE0</l></list></block></custom-block><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>6</l></custom-block><block s="reportJoinWords"><list><l>0x3F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0x80</l></list></block></custom-block><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>0</l></custom-block><block s="reportJoinWords"><list><l>0x3F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0x80</l></list></block></custom-block></list></block></block></script><block s="reportVariadicLessThan"><list><block var="code point"/><l>0x110000</l></list></block><script><block s="doReport"><block s="reportNewList"><list><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>18</l></custom-block><block s="reportJoinWords"><list><l>0x07</l></list></block></custom-block><block s="reportJoinWords"><list><l>0xF0</l></list></block></custom-block><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>12</l></custom-block><block s="reportJoinWords"><list><l>0x3F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0x80</l></list></block></custom-block><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>6</l></custom-block><block s="reportJoinWords"><list><l>0x3F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0x80</l></list></block></custom-block><custom-block s="bitwise %n or %n"><custom-block s="bitwise %n and %n"><custom-block s="bitwise right shift %n by %n bits"><block var="code point"/><l>0</l></custom-block><block s="reportJoinWords"><list><l>0x3F</l></list></block></custom-block><block s="reportJoinWords"><list><l>0x80</l></list></block></custom-block></list></block></block></script></list></block></script></block-definition><block-definition s="bitwise not %&apos;a&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_not(a)</l><list><block var="a"/></list></block></block></script></block-definition><block-definition s="bitwise %&apos;a&apos; and %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_and(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="bitwise %&apos;a&apos; or %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_or(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="bitwise %&apos;a&apos; xor %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_xor(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="bitwise left shift %&apos;a&apos; by %&apos;b&apos; bits" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_left_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="bitwise right shift %&apos;a&apos; by %&apos;b&apos; bits" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_right_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="bitwise unsigned right shift %&apos;a&apos; by %&apos;b&apos; bits" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>bit_unsigned_right_shift(a, b)</l><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;pt:lança _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;pt:lança _ _&#xD;</translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><comment x="0" y="0" w="263.3333333333333" collapsed="false">This is a breakpoint block, to be used in debugging.&#xD;The Boolean input specifies the condition under which&#xD;the program should pause.  (Use True for an unconditional breakpoint.)  The intent is that the script should have&#xD;SHOW VARIABLE blocks for the process&apos;s local variables.&#xD;After the pause, this block automatically hides all temporary variables.</comment><header></header><code></code><translations>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;pt:se _ , então _ e faz pausa em tudo $pause-1-255-220-0&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script><list></list></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;ca:en cascada _ vegades _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="cascade until %&apos;pred&apos; %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="210.47493489583334" collapsed="false">Call f(f(f(...(f(x))))) until condition is true, where the three input slots are condition, f, and x from left to right.  The # variable can be used inside f or condition to indicate how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado da invocação em cascata até que _ de _ com argumento inicial _ _&#xD;ca:en cascada fins _ _ _ _&#xD;</translations><inputs><input type="%predRing"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list><block var="result"/></list></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="compose %&apos;f&apos; %&apos;g&apos;" type="reporter" category="control"><comment x="0" y="0" w="151.33333333333334" collapsed="false">Returns the function x↦f(g(x)) where f and g are the two inputs.</comment><header></header><code></code><translations>pt:a composição de _ com _&#xD;ca:composa _ _&#xD;</translations><inputs><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="f"/><list><block s="evaluate"><block var="g"/><list><l></l></list></block></list></block></autolambda><list></list></block></block></script></block-definition><block-definition s="repeat %&apos;action&apos; until %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="202.66666666666666" collapsed="false">Like the built-in REPEAT UNTIL block, except that the ending condition is not tested until the script has been run the first time.  So the script is run at least once.</comment><header></header><code></code><translations>pt:repete _ até que _ $loop-0.7&#xD;ca:repeteix _ fins _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;action&apos; while %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="287.3333333333333" collapsed="false">Run the script repeatedly, as long as the given condition is true.  Runs the script at least once before testing the condition.</comment><header></header><code></code><translations>pt:repete _ enquanto _ $loop-0.7&#xD;ca:repeteix _ mentre _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat while %&apos;pred&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="264" collapsed="false">Runs the script repeatedly, as long as the condition is true. Tests the condition before the first time the script is run.  Like the built in REPEAT UNTIL except that in this block the condition must be true, not false.</comment><header></header><code></code><translations>pt:enquanto _ , repete _ $loop-0.7&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;num&apos; %&apos;#&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="171" collapsed="false">Runs the script the specified number of times, like the built-in REPEAT block, but this one provides the # variable that can be used inside the script.  Try&#xD;REPEAT (200)&#xD;                MOVE (#) STEPS&#xD;   RIGHT 92&#xD;with the pen down.</comment><header></header><code></code><translations>pt:repete _ vezes _ _ $loop-0.7&#xD;ca:repeteix _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="247.33333333333334" collapsed="false">The primitive FOR block uses an implicit step of ±1 depending on which of the starting and ending values is larger.  This version allows you to provide an explicit step value.  If the sign of the step input is incompatible with the ordering of the starting and ending values, the script will not be run at all.</comment><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;ca:per _ = _ incrementant _ fins _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="step"/><l>0</l></list></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="let %&apos;a&apos; be %&apos;val&apos; in %&apos;loop&apos; %&apos;body&apos;" type="command" category="control"><comment x="0" y="0" w="238.6666666666667" collapsed="false">Provides LOOP as a function of one input that runs&#xD;the body of the LET with A set to the function input,&#xD;so the body can run itself recursively.&#xD;See COPY block in Variables for an example of use.</comment><header></header><code></code><translations>pt:tendo _ o valor inicial _ , executa _ definido como _&#xD;ca:fes que _ sigui _ al _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>a</l><block var="val"/></block><block s="doSetVar"><l>loop</l><block s="reifyScript"><script><block s="doSetVar"><l>a</l><block var="new value"/></block><block s="doRun"><block var="body"/><list><block var="a"/></list></block></script><list><l>new value</l></list></block></block><block s="doRun"><block var="loop"/><list><block var="a"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT connect to %&apos;broker&apos; %&apos;options&apos;" type="command" category="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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="MQTT"><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.1999999999998"><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.1999999999988" w="356.99999999999994" collapsed="false">Synchronous client-server Hello World! with dynamic response topic (timer)</comment><comment x="510.9999999999996" 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.9999999999996" 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.999999999999662" 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.999999999999883" 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="MQTT" 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="unicode as letter from utf-8 list %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><l>1</l></list></block><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportListItem"><l>1</l><block var="data"/></block></block></block></script><list><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><l>2</l></list></block><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><custom-block s="bitwise left shift %n by %n bits"><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>11100</l></custom-block></custom-block><l>6</l></custom-block><block s="reportVariadicSum"><list><custom-block s="bitwise left shift %n by %n bits"><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>11</l></custom-block></custom-block><l>6</l></custom-block><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>2</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>111111</l></custom-block></custom-block></list></block></list></block></block></block></script><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><l>3</l></list></block><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><custom-block s="bitwise left shift %n by %n bits"><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>1111</l></custom-block></custom-block><l>12</l></custom-block><custom-block s="bitwise left shift %n by %n bits"><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>2</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>111100</l></custom-block></custom-block><l>6</l></custom-block><custom-block s="bitwise left shift %n by %n bits"><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>2</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>11</l></custom-block></custom-block><l>6</l></custom-block><custom-block s="bitwise %n and %n"><block s="reportListItem"><l>3</l><block var="data"/></block><custom-block s="binary %n to decimal"><l>111111</l></custom-block></custom-block></list></block></block></block></script></list></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="binary %&apos;num&apos; to decimal" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><block s="reportJoinWords"><list><l>0b</l><block var="num"/></list></block><l>0</l></list></block></block></script></block-definition><block-definition s="%&apos;byte&apos; to 8bit binary list" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">1st item is MSB</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="$slice-1-255-0-0 %s from %s to %s"><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l><l>0</l></list></block><custom-block s="%n to binary list"><block var="byte"/></custom-block></list></block><l>-8</l><l></l></custom-block></block></script></block-definition><block-definition s="%&apos;Number&apos; to binary list" type="reporter" category="operators"><comment x="0" y="0" w="139.16666666666669" collapsed="false">original code by Glen Bull&#xD;&#xD;Modified to remove library dependancy and reverse order of digits - MSB is item 1 of the list</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doSetVar"><l>Number</l><block s="reportVariadicSum"><list><block var="Number"/><l>0</l></list></block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="Number"/><l>0</l></list></block><script><block s="doReport"><block s="reportNewList"><list><l>0</l></list></block></block></script><list></list></block><block s="doDeclareVariables"><list><l>binary list</l></list></block><block s="doSetVar"><l>binary list</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportVariadicEquals"><list><block var="Number"/><l>0</l></list></block><script><block s="doSetVar"><l>binary list</l><block s="reportCONS"><block s="reportModulus"><block var="Number"/><l>2</l></block><block var="binary list"/></block></block><block s="doSetVar"><l>Number</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="Number"/><l>2</l></block></block></block></script></block><block s="doReport"><block var="binary list"/></block></script></block></script></block-definition><block-definition s="$slice-1-255-0-0 %&apos;value&apos; from %&apos;start&apos; to %&apos;end&apos;" type="reporter" category="operators"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Combined text/list reporter&#xD;&#xD;Reports the portion of the first input starting at the position given by the second input and ending at the position given by the third input.  If the third input is empty, reports the portion from the first position to the end of the string.&#xD;&#xD;If a position number is negative, counts from the end backward, so -1 is the last character/item, -2 is the next to last, etc.&#xD;&#xD;If processed start value &gt; processed end value then the result will be in reported in reverse order&#xD;&#xD;Note: If the processed values lie outside the range of 1 to length of item, then an empty value or empty list will be returned. &#xD;&#xD;17Sep2022 Tidy up&#xD;05Sep2022 range checking behaviour altered&#xD;01Sep2022 V1.2.0 Align algorthim with library substring&#xD;27Aug2022 V1.1.1 bug-fix length handling</comment><header></header><code></code><translations>pt:o texto de _ entre as posições _ e _ , inclusive&#xD;ca:part del text _ des de la posició _ fins _&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>length</l></list></block><block s="doSetVar"><l>length</l><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>list</option></l></block><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><block s="reportTextAttribute"><l><option>length</option></l><block var="value"/></block></block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="end"/><l></l></list></block><script><block s="doSetVar"><l>end</l><block var="length"/></block></script><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="end"/><l>0</l></list></block><script><block s="doSetVar"><l>end</l><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="end"/><l>1</l></list></block><block var="length"/></list></block></block></script><list></list></block></script></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="start"/><l></l></list></block><script><block s="doSetVar"><l>start</l><l>1</l></block></script><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="start"/><l>0</l></list></block><script><block s="doSetVar"><l>start</l><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="start"/><l>1</l></list></block><block var="length"/></list></block></block></script><list></list></block></script></block><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicOr"><list><block s="reportVariadicGreaterThan"><list><block var="start"/><block var="length"/></list></block><block s="reportVariadicGreaterThan"><list><block var="end"/><block var="length"/></list></block></list></block><block s="reportVariadicOr"><list><block s="reportVariadicLessThan"><list><block var="start"/><l>1</l></list></block><block s="reportVariadicLessThan"><list><block var="end"/><l>1</l></list></block></list></block></list></block><script><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><l></l></list></block></block></script><list></list></block><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListItem"><block s="reportNumbers"><block var="start"/><block var="end"/></block><block var="value"/></block></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block var="start"/><block var="end"/></block><block var="value"/></block></block></block></script></block-definition><block-definition s="%&apos;number&apos; to binary length %&apos;length&apos; prefix %&apos;prefix&apos;" type="reporter" category="operators"><comment x="0" y="0" w="130.83333333333334" collapsed="false">converts a number to its binary representation with or without a 0b prefix&#xD;&#xD;If length is blank or 0, then it will create it to the minimum length required&#xD;&#xD;Does not currently handle negative numbers</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"><options>4 (nibble) =4&#xD;8 (byte) =8&#xD;16 (2 bytes) =16&#xD;32 (4 bytes) =32</options></input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>binary list</l></list></block><block s="doSetVar"><l>binary list</l><custom-block s="%n to binary list"><block s="reportVariadicSum"><list><block var="number"/><l>0</l></list></block></custom-block></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportIfElse"><block var="prefix"/><l>0b</l><l></l></block><block s="reportJoinWords"><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block var="length"/><l>0</l></list></block><custom-block s="$slice-1-255-0-0 %s from %s to %s"><block s="reportConcatenatedLists"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l>0</l></list></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="length"/></block></block><block var="binary list"/></list></block><block s="reportVariadicProduct"><list><block var="length"/><l>-1</l></list></block><l></l></custom-block><block var="binary list"/></block></block></list></block></block></script></block-definition><block-definition s="modified unicode of %&apos;val&apos;" type="reporter" category="operators"><comment x="0" y="0" w="172.5" collapsed="false">modified to deal with large Unicodes&#xD;NOTE:not hyperised for large Unicodes</comment><header></header><code></code><translations></translations><inputs><input type="%s" initial="1">a</input></inputs><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportIsA"><block var="val"/><l><option>text</option></l></block><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="val"/></block><l>2</l></list></block></list></block><script><block s="doDeclareVariables"><list><l>pair</l></list></block><block s="doSetVar"><l>pair</l><block s="reportUnicode"><block var="val"/></block></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportListItem"><l>1</l><block var="pair"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>d800</l></list></block></block></list></block><block s="reportVariadicLessThanOrEquals"><list><block s="reportListItem"><l>1</l><block var="pair"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>dbff</l></list></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportListItem"><l>2</l><block var="pair"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>dc00</l></list></block></block></list></block><block s="reportVariadicLessThanOrEquals"><list><block s="reportListItem"><l>2</l><block var="pair"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>dfff</l></list></block></block></list></block></list></block><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportDifference"><block s="reportListItem"><l>1</l><l/></block><block s="reportJoinWords"><list><l>0x</l><l>d800</l></list></block></block><block s="reportJoinWords"><list><l>0x</l><l>400</l></list></block></list></block><block s="reportDifference"><block s="reportListItem"><l>2</l><l/></block><block s="reportJoinWords"><list><l>0x</l><l>dc00</l></list></block></block><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block></list></block></autolambda><list></list></block><list><block s="reportUnicode"><block var="val"/></block></list></block></block></script><list></list></block></script><list></list></block><block s="doReport"><block s="reportUnicode"><block var="val"/></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="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="2366"><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="2367"></list></costumes><sounds><list struct="atomic" id="2368"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="2373"><costumes><list struct="atomic" id="2374"></list></costumes><sounds><list struct="atomic" id="2375"></list></sounds><blocks></blocks><variables></variables><scripts><script x="173.45454545454544" y="8.333333333333334"><block s="reportUnicode"><block s="reportTextSplit"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportListItem"><l>1</l><l/></block><l>256</l></list></block><block s="reportListItem"><l>2</l><l/></block></list></block></block></autolambda><list></list></block><block s="reportReshape"><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l><l>255</l></list></block><list><l>2</l><l>2</l></list></block></block></block><l><option>letter</option></l></block></block></script><script x="410.72727272727263" y="221.42424242424238"><block s="reportVariadicProduct"><list><l>1</l><block s="reportJoinWords"><list><l>0xF800</l></list></block></list></block></script><script x="208.00000000000003" y="363.24242424242414"><custom-block s="utf-8 of %s"><block s="reportUnicodeAsLetter"><l>129</l></block></custom-block></script><script x="265.038026751894" y="224.1363636363632"><block s="reportNewList"><list><l>194</l><l>163</l></list></block></script><script x="91.00000000000004" y="207.66666666666666"><block s="reportUnicode"><block var="pub"/></block></script><script x="570.8713600852274" y="212.46969696969654"><block s="reportJoinWords"><list><l>hello </l><block s="reportUnicodeAsLetter"><l>129</l></block><l>world</l></list></block></script><script x="284.2287109375002" y="170.72222222222223"><block s="doSetVar"><l>char</l><block s="reportUnicodeAsLetter"><block var="char"/></block></block></script><script x="209.4344401041669" y="182.2222222222222"><block var="char"/></script><script x="185.76777343750015" y="228.05555555555554"><block s="reportUnicode"><l>߿</l></block></script><script x="30" y="534.777777777778"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="%n to binary length %n prefix %b"><l></l><l>8</l><l><bool>false</bool></l></custom-block></autolambda><list></list></block><custom-block s="utf-8 of %s"><l>䒥</l></custom-block></block></script><script x="322.5986328125" y="418.24242424242414"><block s="reportJoinWords"><list><l>hello </l><l>world</l><l>world</l></list></block></script><script x="141.2734375" y="257.16666666666663"><block var="sub"/></script><script x="67.7734375" y="320.5000000000002"><block s="reportNewList"><list><l>65</l></list></block></script><script x="721.6666666666667" y="31.083333333333297"><block s="doSetVar"><l>sub</l><l>䒥㳖㨖㻄不㱪丧㼸㭋 㤶㪣 㤻㥏ስስ㥏㤻㥏ስስ㥏㣺㦩㤝㤝㥏㣺㣺㤘㦋㥏㨍㪣㤝㤝㥏㬇㮝㤝㤝㥏㰁㲗㤝㤝㥏㲗㲗㤘㫕㥏㱯㲗㥨㥨㥏㰳㰳㦋㩱㥏㰳㱛㦳㦳㥏㱑㱹㧾㧾㥏㱯㲗㩉㩉㥏㣵㰸㦋㦋㥏㲜㣵㫕㫕㥏㯏㯏㫕㧯㥏㭫㭫㩱㦽㥏㭫㮓㧂㧂㥏㭫㮓㨍㨍㥏㮧㯏㩘㩘㥏㫕㭰㩱㩱㥏㩱㧛㩱㩱㥏㥷㣺㩱㩱㥏㣺㣺㩬㫕㥏 㥅㥅ስስ 㥅㥅ስስ 㥅ስ㥙㾑䃦䉐䁘三㸈 㥅ስ㥙㾑䃦䉐䁘三㸈 㤓㨍㥗䔌㺽䅊㰊䇢与㾺䌎䅋</l></block></script><script x="675" y="272.1666666666667"><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %mult%s"><l>broker.emqx.io</l><l>name</l><block var="sub"/><list></list></custom-block></script><script x="714.1666666666667" y="98.66666666666674"><custom-block s="$cloudOutline MQTT disconnect from %s"><l>all</l></custom-block><custom-block s="$cloudOutline MQTT connect to %s %mult%s"><l>broker.emqx.io</l><list></list></custom-block><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="doSetVar"><l>pub</l><block var="#1"/></block></script><list><l>#1</l></list></block><list></list></custom-block></script><script x="41.83333333333337" y="487.1666666666667"><block s="reportUnicode"><custom-block s="unicode as letter from utf-8 list %s"><custom-block s="utf-8 of %s"><custom-block s="%n to binary length %n prefix %b"><l></l><l>8</l><l><bool>false</bool></l></custom-block></custom-block></custom-block></block></script><script x="346.6666666666667" y="461.44444444444446"><block s="reportNewList"><list><l></l><l></l><l></l></list></block></script><script x="23.499999999999993" y="279.33333333333337"><custom-block s="utf-8 of %s"><block s="reportVariadicSum"><list><block s="reportJoinWords"><list><l>0x</l><l>03b2</l></list></block><l></l></list></block></custom-block></script><script x="184.5986328125" y="323"><block s="reportUnicodeAsLetter"><l>65535</l></block></script><script x="17.333333333333343" y="239.33333333333334"><block s="reportUnicode"><l>β</l></block></script><script x="500" y="370.47222222222314"><block s="reportUnicodeAsLetter"><block s="reportNumbers"><l>1000</l><l>2000</l></block></block></script><script x="491.00000000000006" y="404.33333333333337"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="utf-8 of %s"><l></l></custom-block></autolambda><list></list></block><block s="reportUnicode"><block var="sub"/></block></block></script><script x="520.1666666666667" y="494.33333333333337"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="unicode as letter from utf-8 list %s"><l></l></custom-block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="utf-8 of %s"><l></l></custom-block></autolambda><list></list></block><block s="reportUnicodeAsLetter"><block s="reportNumbers"><block s="reportJoinWords"><list><l>0x</l><l>0800</l></list></block><block s="reportJoinWords"><list><l>0x</l><l>08ff</l></list></block></block></block></block></block></script><script x="536.0000000000001" y="611.0000000000001"><block s="reportUnicodeAsLetter"><block s="reportUnicode"><block var="sub"/></block></block></script><script x="255.00162760416669" y="254.9722222222231"><block s="reportUnicode"><l>𝕎</l></block></script><script x="414.6363636363636" y="252.74242424242422"><block s="reportVariadicProduct"><list><l>1</l><block s="reportJoinWords"><list><l>0x07E0</l></list></block></list></block></script><script x="416.6666666666667" y="283.80555555555645"><block s="reportUnicodeAsLetter"><l>65</l></block></script><script x="255.1666666666667" y="283.5"><block s="reportUnicode"><l>𐀀</l></block></script><script x="335.16666666666674" y="201"><block s="reportUnicode"><l>翿</l></block></script><script x="18.499999999999993" y="181.83333333333337"><block s="reportUnicodeAsLetter"><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block></block></script><script x="585.7281901041667" y="312.5"><block s="reportUnicode"><l>￿</l></block></script><script x="707.5" y="313.8055555555556"><block s="reportVariadicSum"><list><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block><l></l></list></block></script><script x="19.166666666666668" y="157.1388888888898"><block s="reportUnicodeAsLetter"><block s="reportJoinWords"><list><l>0x</l><l>ffff</l></list></block></block></script><script x="482.5" y="344.1666666666678"><custom-block s="unicode as letter from utf-8 list %s"><l></l></custom-block></script><script x="428.50000000000006" y="628.8333333333334"><block s="reportUnicode"><l>䒥</l></block></script><script x="415.16666666666674" y="543.5000000000001"><custom-block s="utf-8 of %s"><l>䒥</l></custom-block></script><script x="120.83333333333334" y="627.8333333333344"><custom-block s="bitwise left shift %n by %n bits"><l>206</l><l>8</l></custom-block></script><script x="412.66666666666674" y="566.0000000000001"><block s="reportUnicode"><l>䒥</l></block></script><script x="304.1715494791667" y="589.000000000001"><custom-block s="binary %n to decimal"><l>0100010010100101</l></custom-block></script><script x="17.5" y="401.1388888888896"><block s="reportUnicode"><custom-block s="unicode as letter from utf-8 list %s"><custom-block s="utf-8 of %s"><l>β</l></custom-block></custom-block></block></script><script x="20.166666666666657" y="434.33333333333337"><custom-block s="utf-8 of %s"><custom-block s="unicode as letter from utf-8 list %s"><custom-block s="utf-8 of %s"><l>䒥</l></custom-block></custom-block></custom-block></script><script x="22.5" y="460.3055555555566"><block s="reportUnicode"><custom-block s="unicode as letter from utf-8 list %s"><custom-block s="utf-8 of %s"><l>䒥</l></custom-block></custom-block></block></script><script x="324.33333333333337" y="631.1666666666666"><block s="reportUnicode"><l>𐀀</l></block></script><script x="304.33333333333337" y="608.5000000000001"><custom-block s="binary %n to decimal"><l>0100000000000000</l></custom-block></script><script x="16.833333333333325" y="626.3333333333334"><block s="reportUnicode"><l>䒥</l></block></script><script x="36.00000000000004" y="676.0000000000001"><custom-block s="binary %n to decimal"><l>0100010010100101</l></custom-block></script><script x="17.666666666666657" y="647.6666666666667"><custom-block s="%n to binary length %n prefix %b"><custom-block s="unicode as letter from utf-8 list %s"><custom-block s="utf-8 of %s"><l>䒥</l></custom-block></custom-block><l>16</l><l><bool>false</bool></l></custom-block></script><script x="20.431966145833325" y="348.83333333333326"><block s="reportLetter"><l>1</l><block var="sub"/></block></script><script x="18.499999999999993" y="377.66666666666674"><custom-block s="utf-8 of %s"><l>𐀀</l></custom-block></script><script x="707.6666666666667" y="441.6666666666666"><block s="reportUnicodeAsLetter"><block s="reportNumbers"><block s="reportJoinWords"><list><l>0x</l><l>0800</l></list></block><block s="reportJoinWords"><list><l>0x</l><l>08ff</l></list></block></block></block></script><script x="777.5" y="590.3333333333335"><custom-block s="modified unicode of %s"><l>𐀀</l></custom-block></script><script x="760.8333333333334" y="469.305555555556"><block s="reportTextSplit"><l>A 𐀀 B</l><l><option>letter</option></l></block></script><script x="500.16666666666674" y="466.83333333333337"><block s="reportUnicode"><l>a</l></block></script><script x="579.3333333333334" y="454.33333333333337"><block s="reportTextSplit"><l>A £ B</l><l><option>letter</option></l></block></script><script x="749.1666666666667" y="419.47222222222274"><block s="reportLetter"><l>3</l><l>A 𐀀 B</l></block></script><script x="865.8333333333334" y="417.1388888888894"><block s="reportTextAttribute"><l><option>length</option></l><l>A 𐀀 B</l></block></script><script x="823.5000000000001" y="345.16666666666674"><custom-block s="utf-8 of %s"><l>𐀀</l></custom-block></script><script x="829.3333333333334" y="370.16666666666674"><custom-block s="utf-8 of %s"><l>£</l></custom-block></script><script x="749.3333333333334" y="611.8333333333334"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="utf-8 of %s"><l></l></custom-block></autolambda><list></list></block><block s="reportUnicode"><l>A 𐀀 B</l></block></block></script><script x="979.3899739583333" y="513.3333333333334"><block var="sub"/></script><script x="916.0000000000001" y="586.8333333333334"><block s="reportUnicode"><l>A 𐀀 B</l></block></script><script x="344.16829427083337" y="314.1388888888898"><block s="reportUnicode"><block s="reportUnicodeAsLetter"><l>256</l></block></block></script><script x="896.8333333333334" y="333.50000000000006"><block s="reportUnicode"><l>𐀀</l></block></script><script x="625.1666666666667" y="586.0000000000001"><custom-block s="modified unicode of %s"><l>A 𐀀 B</l></custom-block></script><script x="502.5" y="697.4444444444447"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportListItem"><block var="index"/><block var="list"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>d800</l></list></block></block></list></block><block s="reportVariadicLessThanOrEquals"><list><block s="reportListItem"><block var="index"/><block var="list"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>dbff</l></list></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportListItem"><block s="reportVariadicSum"><list><block var="index"/><l>1</l></list></block><block var="list"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>dc00</l></list></block></block></list></block><block s="reportVariadicLessThanOrEquals"><list><block s="reportListItem"><block s="reportVariadicSum"><list><block var="index"/><l>1</l></list></block><block var="list"/></block><block s="reportRound"><block s="reportJoinWords"><list><l>0x</l><l>dfff</l></list></block></block></list></block></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doRun"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportDifference"><block s="reportListItem"><block var="index"/><block var="list"/></block><block s="reportJoinWords"><list><l>0x</l><l>d800</l></list></block></block><block s="reportJoinWords"><list><l>0x</l><l>400</l></list></block></list></block><block s="reportDifference"><block s="reportListItem"><block s="reportVariadicSum"><list><block var="index"/><l>1</l></list></block><block var="list"/></block><block s="reportJoinWords"><list><l>0x</l><l>dc00</l></list></block></block><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block></list></block></autolambda><list></list></block><list></list></block></block><block s="doReport"><block var="result"/></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block><block var="value"/></block></autolambda><list><l>value</l><l>index</l><l>list</l></list></block><block s="reportUnicode"><l>A 𐀀 B</l></block></block></script></scripts></sprite><sprite name="Sprite(2)" idx="2" x="-156" y="-2" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="20.349000000000018,145.35,0,1" pen="tip" id="2933"><costumes><list id="2934"><item><ref mediaID="unicodeUTF8_Sprite(2)_cst_alonzo"></ref></item></list></costumes><sounds><list struct="atomic" id="2935"></list></sounds><blocks></blocks><variables></variables><scripts><script x="35.99999999999999" y="102.66666666666666"><block s="reportUnicode"><block s="reportUnicodeAsLetter"><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block></block></block></script><script x="35.99999999999999" y="151.83333333333337"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportDifference"><block s="reportListItem"><l>1</l><l/></block><block s="reportJoinWords"><list><l>0x</l><l>d800</l></list></block></block><block s="reportJoinWords"><list><l>0x</l><l>400</l></list></block></list></block><block s="reportDifference"><block s="reportListItem"><l>2</l><l/></block><block s="reportJoinWords"><list><l>0x</l><l>dc00</l></list></block></block><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block></list></block></autolambda><list></list></block><list><block s="reportUnicode"><block s="reportUnicodeAsLetter"><block s="reportJoinWords"><list><l>0x</l><l>10000</l></list></block></block></block></list></block></script><script x="36.66666666666667" y="56.972222222222705"><block s="reportUnicode"><block s="reportUnicodeAsLetter"><block s="reportJoinWords"><list><l>0x</l><l>ffff</l></list></block></block></block></script><script x="40.833333333333336" y="272.5"><block s="reportUnicode"><l>𐀀</l><comment w="220.0000000000001" collapsed="true">𐀀 is the letter of unicode 0x10000 (65536)</comment></block></script><script x="40" y="310.1666666666662"><custom-block s="modified unicode of %s"><l>𐀀</l></custom-block></script><script x="41.00000000000004" y="347.66666666666674"><custom-block s="modified unicode of %s"><l>ab</l></custom-block></script><script x="575.1666666666667" y="65.16666666666666"><block s="reportUnicode"><l>☺︎</l></block></script><script x="641.2734375000001" y="124.66666666666667"><block s="reportUnicodeAsLetter"><block s="reportJoinWords"><list><l>0x</l><l>ffff</l></list></block></block></script><script x="525.8333333333334" y="24.63888888888922"><block s="reportUnicodeAsLetter"><block s="reportUnicode"><l>☺︎</l></block></block></script><script x="444.1666666666667" y="313.944444444445"><block s="reportMap"><block s="reifyReporter"><script></script><list></list></block><block s="reportGetImageAttribute"><l><option>pixels</option></l><l>alonzo</l></block></block></script></scripts></sprite><watcher var="pub" style="normal" x="10" y="10" color="243,118,29"/><watcher var="sub" style="normal" x="10" y="34.400002" color="243,118,29"/></sprites></stage><variables><variable name="pub"><l>䒥㳖㨖㻄不㱪丧㼸㭋 㤶㪣 㤻㥏ስስ㥏㤻㥏ስስ㥏㣺㦩㤝㤝㥏㣺㣺㤘㦋㥏㨍㪣㤝㤝㥏㬇㮝㤝㤝㥏㰁㲗㤝㤝㥏㲗㲗㤘㫕㥏㱯㲗㥨㥨㥏㰳㰳㦋㩱㥏㰳㱛㦳㦳㥏㱑㱹㧾㧾㥏㱯㲗㩉㩉㥏㣵㰸㦋㦋㥏㲜㣵㫕㫕㥏㯏㯏㫕㧯㥏㭫㭫㩱㦽㥏㭫㮓㧂㧂㥏㭫㮓㨍㨍㥏㮧㯏㩘㩘㥏㫕㭰㩱㩱㥏㩱㧛㩱㩱㥏㥷㣺㩱㩱㥏㣺㣺㩬㫕㥏 㥅㥅ስስ 㥅㥅ስስ 㥅ስ㥙㾑䃦䉐䁘三㸈 㥅ስ㥙㾑䃦䉐䁘三㸈 㤓㨍㥗䔌㺽䅊㰊䇢与㾺䌎䅋</l></variable><variable name="sub"><l>䒥㳖㨖㻄不㱪丧㼸㭋 㤶㪣 㤻㥏ስስ㥏㤻㥏ስስ㥏㣺㦩㤝㤝㥏㣺㣺㤘㦋㥏㨍㪣㤝㤝㥏㬇㮝㤝㤝㥏㰁㲗㤝㤝㥏㲗㲗㤘㫕㥏㱯㲗㥨㥨㥏㰳㰳㦋㩱㥏㰳㱛㦳㦳㥏㱑㱹㧾㧾㥏㱯㲗㩉㩉㥏㣵㰸㦋㦋㥏㲜㣵㫕㫕㥏㯏㯏㫕㧯㥏㭫㭫㩱㦽㥏㭫㮓㧂㧂㥏㭫㮓㨍㨍㥏㮧㯏㩘㩘㥏㫕㭰㩱㩱㥏㩱㧛㩱㩱㥏㥷㣺㩱㩱㥏㣺㣺㩬㫕㥏 㥅㥅ስስ 㥅㥅ስስ 㥅ስ㥙㾑䃦䉐䁘三㸈 㥅ስ㥙㾑䃦䉐䁘三㸈 㤓㨍㥗䔌㺽䅊㰊䇢与㾺䌎䅋</l></variable></variables></scene></scenes></project><media name="unicodeUTF8" app="Snap! 10.7.1, https://snap.berkeley.edu" version="2"><costume name="alonzo" center-x="45" center-y="60" image="data:image/png;base64,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" mediaID="unicodeUTF8_Sprite(2)_cst_alonzo"/></media></snapdata>