<snapdata remixID="12839555"><project name="Lab 3.4 - Reporters" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Lab 3.4 - Reporters"><notes></notes><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="reportVariadicEquals"><list><block var="expected"/><block var="actual"/></list></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="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>0</l></list></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><list></list></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="reportVariadicEquals"><list><block var="#1"/><block s="reportBoolean"><l><bool>true</bool></l></block></list></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="reportVariadicEquals"><list><block var="#1"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></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="doIfElse"><block s="reportVariadicLessThan"><list><block var="a"/><block var="b"/></list></block><script><block s="doReport"><block var="a"/></block></script><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="doIfElse"><block s="reportVariadicLessThan"><list><block var="b"/><block var="a"/></list></block><script><block s="doReport"><block var="a"/></block></script><script><block s="doReport"><block var="b"/></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="doIfElse"><block s="reportVariadicOr"><list><block s="reportVariadicLessThan"><list><block var="b"/><block var="a"/><block var="c"/></list></block><block s="reportVariadicLessThan"><list><block var="c"/><block var="a"/><block var="b"/></list></block></list></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="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="reportVariadicOr"><list><block s="reportVariadicGreaterThan"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block><block var="length"/></list></block><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block><block var="length"/></list></block></list></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="reportVariadicSum"><list><block s="reportPower"><block var="distanceX"/><l>2</l></block><block s="reportPower"><block var="distanceY"/><l>2</l></block></list></block></block></block></script><scripts><script x="299.5498046874999" y="187.33333333333331"><block s="reportVariadicSum"><list><l></l><l></l></list></block></script><script x="362.5498046874999" y="78.66666666666669"><block s="reportVariadicSum"><list><l></l><l></l></list></block></script></scripts></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="doDeclareVariables"><list><l>time</l></list></block><block s="doSetVar"><l>time</l><l>1</l></block><block s="doRepeat"><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportUnicode"><block var="letter"/></block><block s="reportUnicode"><block s="reportLetter"><block var="time"/><block var="text"/></block></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doChangeVar"><l>time</l><l>1</l></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition></blocks><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" id="668"><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="669"></list></costumes><sounds><list struct="atomic" id="670"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="30" y="40" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="675"><costumes><list struct="atomic" id="676"></list></costumes><sounds><list struct="atomic" id="677"></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="110" y="342"><custom-block s="min %n %n"><l></l><l></l></custom-block></script><script x="109" y="365"><custom-block s="max %n %n"><l></l><l></l></custom-block></script><script x="111" y="392"><custom-block s="is %n between %n and %n ?"><l></l><l></l><l></l></custom-block></script><script x="153" y="455"><custom-block s="distance to x: %n y: %n"><l>10</l><l>15</l></custom-block></script><script x="112" y="428"><custom-block s="is %txt at least %n letters long?"><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.39999800000004" color="243,118,29" hidden="true"/><watcher var="max tests" style="normal" x="22" y="212.39999800000007" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="Number of passing tests"><l>19</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="728"><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="729"><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="730"><item><bool>true</bool></item><item><bool>true</bool></item><item><bool>true</bool></item></list></variable><variable name="between tests"><list id="731"><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="732">bar,foo,0</list></variable></variables></scene></scenes></project><media name="Lab 3.4 - Reporters" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>