<snapdata remixID="10798262"><project name="3.4" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><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="true" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><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="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><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="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="61.923076923076906" y="40"><block s="receiveGo"></block><block s="doSetVar"><l>Number of passing tests</l><l>0</l></block><block s="doSetVar"><l>Number of failing tests</l><l>0</l></block><custom-block s="test min block"></custom-block><custom-block s="test max block"></custom-block><custom-block s="test between block"></custom-block><custom-block s="test min letter count block"></custom-block><custom-block s="test distance to block"></custom-block><custom-block s="test contains letter block"></custom-block><block s="bubble"><block s="reportJoinWords"><list><l>Tests completed with </l><block var="Number of passing tests"/><l> passing and </l><block var="Number of failing tests"/><l> failing.</l></list></block></block></script><script x="63" y="327.83333333333337"><custom-block s="min %n %n"><l></l><l></l></custom-block></script><script x="60" y="360.83333333333337"><custom-block s="max %n %n"><l></l><l></l></custom-block></script><script x="60" y="394.83333333333337"><custom-block s="is %n between %n and %n ?"><l></l><l></l><l></l></custom-block></script><script x="60" y="429.83333333333337"><custom-block s="is %txt at least %n letters long?"><l></l><l></l></custom-block></script><script x="62" y="459.83333333333337"><custom-block s="distance to x: %n y: %n"><l></l><l></l></custom-block></script><script x="62" y="488.83333333333337"><custom-block s="%txt contains letter %s ?"><l></l><l></l></custom-block></script></scripts></sprite><watcher var="Number of passing tests" style="normal" x="10" y="10" color="243,118,29"/><watcher var="Number of failing tests" style="normal" x="10" y="36.60000199999999" color="243,118,29"/><watcher var="tests" style="normal" x="10" y="209.30000800000005" color="243,118,29" hidden="true"/><watcher var="min tests" style="normal" x="10" y="328.80001" color="243,118,29" hidden="true"/><watcher var="qux" style="normal" x="10" y="240.499998" color="243,118,29" hidden="true"/><watcher var="between tests" style="normal" x="23" y="260.399998" color="243,118,29" hidden="true"/><watcher var="max tests" style="normal" x="22" y="212.39999800000004" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="expect equals %&apos;expected&apos; %&apos;actual&apos; %&apos;message&apos;" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="expected"/><block var="actual"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doAsk"><block s="reportJoinWords"><list><l>FAILURE:</l><block var="message"/><l>. Expected: </l><block var="expected"/><l> actual: </l><block var="actual"/><l>. Press enter to continue.</l></list></block></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="count %&apos;list&apos; matching %&apos;criterion&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>item</l><l>num matching</l></list></block><block s="doSetVar"><l>num matching</l><l>0</l></block><block s="doUntil"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>0</l></block><script><block s="doIf"><block s="evaluate"><block var="criterion"/><list><block s="reportListItem"><l>1</l><block var="list"/></block></list></block><script><block s="doChangeVar"><l>num matching</l><l>1</l></block></script></block><block s="doSetVar"><l>list</l><block s="reportCDR"><block var="list"/></block></block></script></block><block s="doReport"><block var="num matching"/></block></script></block-definition><block-definition s="accumulate test results %&apos;test results&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doChangeVar"><l>Number of passing tests</l><custom-block s="count True in %l"><block var="test results"/></custom-block></block><block s="doChangeVar"><l>Number of failing tests</l><custom-block s="count False in %l"><block var="test results"/></custom-block></block></script></block-definition><block-definition s="count True in %&apos;list&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="count %l matching %predRing"><block var="list"/><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="#1"/><block s="reportBoolean"><l><bool>true</bool></l></block></block></autolambda><list><l>#1</l></list></block></custom-block></block></script></block-definition><block-definition s="count False in %&apos;list&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="count %l matching %predRing"><block var="list"/><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="#1"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></autolambda><list><l>#1</l></list></block></custom-block></block></script></block-definition><block-definition s="test min block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><l>7</l><custom-block s="min %n %n"><l>10</l><l>7</l></custom-block><l>min of two positives, left bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>7</l><custom-block s="min %n %n"><l>7</l><l>10</l></custom-block><l>min of two positives, right bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>-10</l><custom-block s="min %n %n"><l>-7</l><l>-10</l></custom-block><l>min of two negatives, left bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>-10</l><custom-block s="min %n %n"><l>-7</l><l>-10</l></custom-block><l>min of two negatives, right bigger</l></custom-block><custom-block s="expect equals %s %s %s"><l>-1</l><custom-block s="min %n %n"><l>6</l><l>-1</l></custom-block><l>min of left positive, right negative</l></custom-block><custom-block s="expect equals %s %s %s"><l>-1</l><custom-block s="min %n %n"><l>-1</l><l>6</l></custom-block><l>min of right positive, left negative</l></custom-block><custom-block s="expect equals %s %s %s"><l>4</l><custom-block s="min %n %n"><l>4</l><l>4</l></custom-block><l>min of equals</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test max block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><custom-block s="max %n %n"><l>3</l><l>7</l></custom-block><l>7</l><l>max, left bigger</l></custom-block><custom-block s="expect equals %s %s %s"><custom-block s="max %n %n"><l>7</l><l>3</l></custom-block><l>7</l><l>max, right bigger</l></custom-block><custom-block s="expect equals %s %s %s"><custom-block s="max %n %n"><l>4</l><l>4</l></custom-block><l>4</l><l>max of equals</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test between block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %n between %n and %n ?"><l>5</l><l>0</l><l>10</l></custom-block><l>mid between low and high</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %n between %n and %n ?"><l>5</l><l>10</l><l>0</l></custom-block><l>mid between high and low</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>0</l><l>5</l><l>10</l></custom-block><l>low between mid and high</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>0</l><l>10</l><l>5</l></custom-block><l>low between high and mid</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>10</l><l>0</l><l>5</l></custom-block><l>high between low and mid</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %n between %n and %n ?"><l>10</l><l>5</l><l>0</l></custom-block><l>high between low and mid</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test min letter count block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="is %txt at least %n letters long?"><l>brookline</l><l>20</l></custom-block><l>text too short</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %txt at least %n letters long?"><l>high</l><l>4</l></custom-block><l>text equal length</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="is %txt at least %n letters long?"><l>school</l><l>-1</l></custom-block><l>text longer</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="test distance to block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>tests</l></list></block><block s="doSetVar"><l>tests</l><block s="reportNewList"><list><l></l></list></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>0</l><custom-block s="distance to x: %n y: %n"><l>0</l><l>0</l></custom-block><l>distance (on top of)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>50</l><custom-block s="distance to x: %n y: %n"><l>30</l><l>40</l></custom-block><l>distance (quadrant 1)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>130</l><custom-block s="distance to x: %n y: %n"><l>-50</l><l>120</l></custom-block><l>distance (quadrant 2)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>25</l><custom-block s="distance to x: %n y: %n"><l>-7</l><l>-24</l></custom-block><l>distance (quadrant 3)</l></custom-block><block var="tests"/></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>41</l><custom-block s="distance to x: %n y: %n"><l>40</l><l>-9</l></custom-block><l>distance (quadrant 4)</l></custom-block><block var="tests"/></block><block s="gotoXY"><l>30</l><l>40</l><comment w="174.6153846153846" collapsed="false">We already tested above distance to 30,40 when the sprite was at 0,0. Now we turn that around and have the sprite at 30,40 and compute the distance to 0,0.</comment></block><block s="doAddToList"><custom-block s="expect equals %s %s %s"><l>50</l><custom-block s="distance to x: %n y: %n"><l>0</l><l>0</l></custom-block><l>distance (symmetric)</l></custom-block><block var="tests"/></block><block s="gotoXY"><l>0</l><l>0</l></block><custom-block s="accumulate test results %l"><block var="tests"/></custom-block></script></block-definition><block-definition s="test contains letter block" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="accumulate test results %l"><block s="reportNewList"><list><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>brookline</l><l>x</l></custom-block><l>letter missing</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="%txt contains letter %s ?"><l>high</l><l>g</l></custom-block><l>letter present</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>school</l><l> </l></custom-block><l>space missing</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>true</bool></l></block><custom-block s="%txt contains letter %s ?"><l>is awesome</l><l> </l></custom-block><l>space missing</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>WHEE!</l><l>h</l></custom-block><l>upper contains lower</l></custom-block><custom-block s="expect equals %s %s %s"><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="%txt contains letter %s ?"><l>All right, settle down.</l><l>S</l></custom-block><l>lower contains upper</l></custom-block></list></block></custom-block></script></block-definition><block-definition s="min %&apos;a&apos; %&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="doIf"><block s="reportOr"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block s="reportEquals"><block var="a"/><block var="b"/></block></block><script><block s="doReport"><block var="a"/></block></script></block><block s="doIf"><block s="reportLessThan"><block var="b"/><block var="a"/></block><script><block s="doReport"><block var="b"/></block></script></block></script></block-definition><block-definition s="max %&apos;a&apos; %&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="doIf"><block s="reportOr"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block s="reportEquals"><block var="a"/><block var="b"/></block></block><script><block s="doReport"><block var="b"/></block></script></block><block s="doIf"><block s="reportLessThan"><block var="b"/><block var="a"/></block><script><block s="doReport"><block var="a"/></block></script></block></script></block-definition><block-definition s="is %&apos;a&apos; between %&apos;b&apos; and %&apos;c&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportOr"><block s="reportAnd"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block s="reportGreaterThan"><block var="a"/><block var="c"/></block></block><block s="reportAnd"><block s="reportLessThan"><block var="a"/><block var="c"/></block><block s="reportGreaterThan"><block var="a"/><block var="b"/></block></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="is %&apos;text&apos; at least %&apos;length&apos; letters long?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportOr"><block s="reportGreaterThan"><block s="reportStringSize"><block var="text"/></block><block var="length"/></block><block s="reportEquals"><block s="reportStringSize"><block var="text"/></block><block var="length"/></block></block><script><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="distance to x: %&apos;x&apos; y: %&apos;y&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportSum"><block s="reportPower"><block s="reportDifference"><block s="xPosition"></block><block var="x"/></block><l>2</l></block><block s="reportPower"><block s="reportDifference"><block s="yPosition"></block><block var="y"/></block><l>2</l></block></block></block></block></script></block-definition><block-definition s="%&apos;text&apos; contains letter %&apos;letter&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%s"></input></inputs><script><block s="doFor"><l>i</l><l>1</l><block s="reportStringSize"><block var="text"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportUnicode"><block s="reportLetter"><block var="i"/><block var="text"/></block></block><block s="reportUnicode"><block var="letter"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><scripts><script x="98" y="671.8333333333334"><block s="doIfElse"><l/><script></script><script></script></block></script><script x="51.6416015625" y="304.8333333333333"><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>1</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>2</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>3</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>4</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>5</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>6</l><block var="text"/></block><block var="text"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>7</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>8</l><block var="text"/></block><block var="letter"/></block><block s="reportOr"><block s="reportEquals"><block s="reportLetter"><l>9</l><block var="text"/></block><block var="letter"/></block><block s="reportEquals"><block s="reportLetter"><l>10</l><block var="text"/></block><block var="letter"/></block></block></block></block></block></block></block></block></block></block></script></scripts></block-definition></blocks><variables><variable name="Number of passing tests"><l>31</l></variable><variable name="Number of failing tests"><l>0</l></variable><variable name="test results"><l>6</l></variable><variable name="tests"><list id="804"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><l></l></item><item><l></l></item><item><l></l></item></list></variable><variable name="min tests"><list id="805"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="max tests"><list id="806"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="between tests"><list id="807"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>false</bool></item><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="qux"><list struct="atomic" id="808">bar,foo,0</list></variable></variables></project><media name="3.4" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>