<snapdata remixID="9289480"><project name="U8V2p1 Recursion Factorial Demo" app="Snap! 5.4, http://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" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+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+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</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="1.8165417909362986" y="-1.762420891830942" 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><comment x="20" y="20" w="593" collapsed="false">Updated Matthew Van Dyke on 02/23/2020&#xD;1920 U8V2p1 Recursion Factorial Demo (starter file)&#xD;Week 11: Recursion II Video: Recursion II  Recursion: Factorial</comment><script x="20" y="98"><block s="doSetVar"><l>trace</l><block s="reportNewList"><list></list></block><comment w="297" collapsed="true">Housekeeping</comment></block><block s="doDeleteFromList"><l><option>all</option></l><block var="trace"/></block><block s="bubble"><custom-block s="%s !"><l>3</l></custom-block></block></script><script x="18" y="276"><custom-block s="n %s ! extended"><l>6</l><comment w="403" collapsed="true">Complete Video Lab page 2 - Recursion: Factorial Demo</comment></custom-block></script><script x="17" y="221"><custom-block s="%s !"><l>3</l><comment w="404" collapsed="true">Complete Video Lab page 1 - Recursion Factorial: Recursion: Demonstrating n!</comment></custom-block></script></scripts></sprite><watcher var="trace" style="normal" x="2.9832899305556566" y="2.983289930555557" color="243,118,29" extX="113" extY="156"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><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="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.000003" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></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><custom-block s="ignore %s"><l>3</l></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations></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></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></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="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></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"><header></header><code></code><translations></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></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="tell %&apos;sprite&apos; to %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block var="action"/><block var="sprite"/></block><list></list></block></script></block-definition><block-definition s="ask %&apos;sprite&apos; for %&apos;expression&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block var="expression"/><block var="sprite"/></block><list></list></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block></script></block-definition><block-definition s="%&apos;n&apos; !" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="n"/><l>0</l></block><script><block s="doReport"><l>1</l></block></script><script><block s="doReport"><block s="reportProduct"><block var="n"/><custom-block s="%s !"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block></script></block></script></block-definition><block-definition s="n %&apos;n&apos; ! extended" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doAddToList"><custom-block s="join words %mult%txt"><list><block var="n"/><l>!</l></list></custom-block><block var="trace"/></block><block s="doIfElse"><block s="reportEquals"><block var="n"/><l>0</l></block><script><block s="doAddToList"><custom-block s="join words %mult%txt"><list><l>returning</l><l>1</l></list></custom-block><block var="trace"/></block><block s="doReport"><l>1</l></block></script><script><block s="doDeclareVariables"><list><l>answer</l></list></block><block s="doSetVar"><l>answer</l><block s="reportProduct"><block var="n"/><custom-block s="%s !"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block><block s="doAddToList"><custom-block s="join words %mult%txt"><list><l>returning</l><block var="answer"/></list></custom-block><block var="trace"/></block><block s="doReport"><block var="answer"/></block></script></block></script></block-definition></blocks><variables><variable name="trace"><list struct="atomic" id="686">!,6 !,returning 720,6 !,returning 720</list></variable></variables></project><media name="U8V2p1 Recursion Factorial Demo" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>