<snapdata remixID="10069507"><project name="U2L13-Tic-Tac-Toe Starter" 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="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="Square" idx="1" x="-100" y="-50" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="Empty" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAx0lEQVRoQ+2awQ2CUBAFlybwSqzEWiTfoozWwhViONiRiYkFvMsEf4b75LEzHBmqs2eoqktVLT3cNU3n/XvQdW7L83H/65vW7VW31t4edNSMFjpqmd97WchCsAE/OVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGA30X6uWPxnE8bR/Jtp2GcsP1ZgAAAABJRU5ErkJggg==" id="10"/></item><item><costume name="X" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACBUlEQVRoQ+3aO0/CUBQH8MMGIRFnooaRL0BgdCIGqQnxASgQjMjqc3A04maM38KwOTqqm8YEFx+rr0QdcSMupiQ1olTOvfec3hZha9LH/d1/e8M/rQ8AIoaR2QoG/X7w+K/V+rj2AcB4LBY/LpUXPQ16e32Bq0bjoQ3KZvNH9frhsJcDOr+4hN1abQBybYj/M6HHp2cYGx1xVSp2Y0IltFSpQjgchtrOtitQN7d3YKTTsLd/ANOZqY4xoUDN5jtUlqsQjUa1oyzMQqHYdSwokDkFbkD1wpjjRIN0ozAYYZAuFBYjBXIaJYKRBjmFEsUogbhRMhhlEBdKFkMCokapYMhAVChVDClIFUWBIQfJoqgwLCBRFCWGDYRFUWNYQb1QHBh2kB2KC+MI6Ccql8u2y5ldn+loaxIbQvVB4vxfh5h9qlAswdnpCaysrrEVRcdA5m02mUpBIBCAmdk5b4O+PzObG+usdZ49oW4LAGedZwX9tZpxodhAmKWZA8UCwmCs5Y8aRQ4SwXCgSEEyGGoUGUgFQ4kiAVFgqFDKIEoMBUoJxIFRRUmDODEqKCmQExhZlDDISYwMSgikAyOKQoN0YkRQKJAbMFgUCpRMTkA8kWBrmaLV3vpDm8vPy700duNrfRMVCg39mgtUQqIzqHP/AUjn7GOu3d8J9dsHgBEAKGNi9cA+958uiHxCYDA7+gAAAABJRU5ErkJggg==" id="11"/></item><item><costume name="O" center-x="26" center-y="26" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEYElEQVRoQ+2aS0wTURSG/66Vx0oXCCIK1MfCFoxuFERDjOArahR8xKgFJS4kRuOGUsrGIBUXxgfFxKhA8REfYGKIiujCB9BqIoiSaAQV3fHQNeaMuUlLZzp3Zu4URCZpuui9Z853/jPn3numFkyxywIgG0DbVOBKTk7pkoD2H3C0Xa6r/aeZXr7qQJHD8XYaaLLKOK0QrzKtj57A7w+g7+MHtD15jM+fP4VN3bZ9BxISErDUZkfO6iwkJc7hNa84TqhC/QNf4fXWof76NWRkLpM+drsN1vQ0WWfp5r0fPuJNwI/79+5K43cWFGLrlo26wYQABYMUHSpBYcEOXdG+fec+fI0NGB4aQvHhEl1ghoGuXK2H2+UEgRwudiAuLlZ3dNlEStfqqiokJiWhvNypKTi6gYaHR1DuqkBPdzfclZVYsXyZYZBgA2T/wiUvai+ex8VaL3LX5nDZ1wVENzvoKEJsbCzOeKqFqKLkLaXh8WOlOO2p4UpBzUAMxmq1otLt4oqa0UHdPe+xIT+fC0oz0IGDRYiJicHZGo9RPzXNJ6glixfhxcvXEdNbE9C585fQ/rQNdd5aU9NMLf0CgYDi/bmBWITedfdg8aKFmqIrcvDR0mOSOaUM4QaiVLPZM3CkpFikf5pt0TNss9nQ0OiTTT0uIBpUWLATkaTW7JmBCZT6AX8X5I46XEAk84LUtAlXh8WAqdTc0hKW/qpAtK2Zm5SIoaHhCSkESkKeqvLg96/RsKVDFYi2NrR5jHaZVstIKlKlR0vR2vowZKgqEKXbylVZXKu0mhOif09JmY/xaacKJDdJtGN67ckFWxXIYrFgbGxM7z1NnUfVjq7gpSQiEP3o8Xhw84bPVMf0GqdjRpPPF1K+VYG8Xq9svdfrhMh55Px4/6aBREbYqC3NCinVeqOOiJpPh7/nz9pD1sj/q8pRJHNz15nSMxChEp0A1uflhyz6qgqVOV2YvyAV+/buEuGDUBu06D9tbw/pCqkCsV7ZZFuLWKtL816Oturx8XH40j+gqT8mVAoZY5Q5M2bG4OSJvydYdqkqRAOVJpvttJL9SEHmAqIzUXZW1qQ6sf78MSjbRuMCYirRd7R6cUrqsAOn0iPADcRUUmpORCv9qFSnpqWHPTuaniE2mLVlJ6pZQsfurs6OiH1BboUYFBWI3t7eqDcbWTDlGiOaq9z4dIo2FC8M+alZofFKuVzlpnZS6VR6proqrHeg9MzqBiKDlNP0/sbpcgvfGlERqqhwY6C/HzVna7iDZgiISewsK5PetjkcDsMvvmjRvFbfKKmi562gYSCCCnZidc6asB0wT0knRRoamyTFyYbe4AgBYg4T2J17zXjQ0iyV142bNkst5MwMuzRkoTVd6r7SwXF09Be+fR9EX1+fNJY+u3bvQV5eniGVhQIFK0ER7+j0Sw7TfxVGRkZw62aTNGTevBRJBXpxxoBFvaM1DYgnzcwYMw1kRlRF2pzaCk2VfzTOmjX71R8xTomk2qlpUgAAAABJRU5ErkJggg==" id="12"/></item></list></costumes><sounds><list struct="atomic" id="13"></list></sounds><blocks></blocks><variables><variable name="position number"><l>1</l></variable></variables><scripts><script x="16" y="14.400000000000006"><block s="receiveGo"></block><block s="clear"></block><custom-block s="tictactoe"></custom-block><block s="doSetVar"><l>position number</l><l>1</l></block><block s="doSetVar"><l>board</l><block s="reportNumbers"><l>1</l><l>9</l></block></block><block s="doSetVar"><l>playing</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script x="24" y="338"><block s="reportEquals"><custom-block s="status of triple %l"><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></custom-block><block s="reportNewList"><list><l>O</l><l>O</l><l>O</l></list></block></block></script><script x="22" y="368.3333333333335"><block s="reportEquals"><custom-block s="status of triple %l"><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block></custom-block><block s="reportNewList"><list><l>X</l><l>X</l><l>X</l></list></block></block></script><script x="25" y="320"><custom-block s="status of all winning triples %l"><l/></custom-block></script><script x="373.9999999999999" y="10"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doIfElse"><block s="reportAnd"><block var="playing"/><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l></block></block><script><block s="doIfElse"><block s="reportEquals"><block var="X&apos;s turn?"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doSwitchToCostume"><l>X</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>X</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>false</bool></l><comment w="90" collapsed="false">X plays first.</comment></block></block></script><script><block s="doSwitchToCostume"><l>O</l></block><block s="doReplaceInList"><block var="position number"/><block var="board"/><l>O</l></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="90" collapsed="false">X plays first.</comment></block></block></script></block></script><script><block s="doSayFor"><l>spot taken</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><custom-block s="won? %s"><l>x</l></custom-block><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doSayFor"><l>X won</l><l>2</l></block></script></block><block s="doIf"><block s="reportEquals"><custom-block s="won? %s"><l>o</l></custom-block><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doSayFor"><l>O won</l><l>2</l></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportBoolean"><l><bool>true</bool></l></block></block><script><block s="doSayFor"><l>Tie</l><l>2</l></block></script></block></script></block></script><script x="169" y="223.4666666666669"><block s="doReport"><l></l></block></script><script x="10" y="263.9999999999998"><custom-block s="status of triple %l"><l/></custom-block></script><script x="78.64160156249989" y="424.1666666666664"><custom-block s="tie"></custom-block></script></scripts></sprite><watcher var="X&apos;s turn?" style="normal" x="5" y="5" color="243,118,29" hidden="true"/><watcher scope="Square" var="position number" style="normal" x="8" y="274.000002" color="243,118,29"/><watcher var="board" style="normal" x="6" y="6" color="243,118,29" extX="80" extY="70"/><watcher var="playing" style="normal" x="22" y="30" color="243,118,29"/><watcher var="turns" style="normal" x="10" y="10" color="243,118,29"/></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.00000300000002" 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="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="show"></block><custom-block s="for %upvar = %n to %n %cs"><l>row</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>column</l><l>1</l><l>3</l><script><block s="createClone"><l><option>myself</option></l></block><block s="doChangeVar"><l>position number</l><l>1</l></block><block s="changeXPosition"><l>50</l></block></script></custom-block><block s="changeXPosition"><l>-150</l></block><block s="changeYPosition"><l>-50</l></block></script></custom-block><block s="hide"></block></script></block-definition><block-definition s="tictactoe" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="gotoXY"><l>-100</l><l>100</l></block><block s="doWait"><l>.1</l><comment w="181.33333333333334" collapsed="true">Wait for old clones to be deleted.</comment></block><custom-block s="makeBoard"></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="90" collapsed="true">X plays first.</comment></block></block></script></block-definition><block-definition s="ready" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="possible winning triples." type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="status of triple %&apos;list&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="list"/></block></block></script></block-definition><block-definition s="status of all winning triples %&apos;list&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="status of triple %l"><l/></custom-block></autolambda><list></list></block><custom-block s="possible winning triples."></custom-block></block></block></script></block-definition><block-definition s="won? %&apos;x/o&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="status of all winning triples %l"><custom-block s="possible winning triples."></custom-block></custom-block><block s="reportNewList"><list><block var="x/o"/><block var="x/o"/><block var="x/o"/></list></block></block></block></script></block-definition><block-definition s="tie" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block s="reportAnd"><custom-block s="won? %s"><l>x</l></custom-block><custom-block s="won? %s"><l>o</l></custom-block></block><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="reportEquals"><block s="reportEquals"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><custom-block s="empty? %l"><l/></custom-block></autolambda><list></list></block><block var="board"/></block><l></l></block><block s="reportBoolean"><l><bool>true</bool></l></block></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="turns" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition></blocks><variables><variable name="X&apos;s turn?"><bool>false</bool></variable><variable name="board"><list struct="atomic" id="950">X,O,X,X,O,O,O,X,X</list></variable><variable name="playing"><bool>true</bool></variable><variable name="turns"><l>0</l></variable></variables></project><media name="U2L13-Tic-Tac-Toe Starter" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>