<snapdata remixID="9046915"><project name='U3L3-Tic-Tac-Toe' app='Snap! 5.1, http://snap.berkeley.edu' version='1'>
  <notes></notes>
  <thumbnail>data:image/png;base64,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</thumbnail>
  <stage inheritance='false' id='1' volume='100' height='360' tempo='60' lines='round' width='480' name='Stage' sublistIDs='false' threadsafe='false' codify='false' color='255,255,255,1' scheduled='false' pan='0' ternary='true' costume='0'>
    <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'/>
    </costumes>
    <sounds>
      <list struct='atomic' id='3'/>
    </sounds>
    <variables/>
    <blocks/>
    <scripts/>
    <sprites>
      <sprite draggable='true' x='-50' pen='tip' id='8' y='-100' name='Square' idx='1' volume='100' rotation='1' scale='1' color='80,80,80,1' hidden='true' pan='0' heading='90' costume='1'>
        <costumes>
          <list id='9'>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAx0lEQVRoQ+2awQ2CUBAFlybwSqzEWiTfoozWwhViONiRiYkFvMsEf4b75LEzHBmqs2eoqktVLT3cNU3n/XvQdW7L83H/65vW7VW31t4edNSMFjpqmd97WchCsAE/OVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGAxaChcdzFoqVwYCFYOHxnIViZTBgIVh4PGehWBkMWAgWHs9ZKFYGA30X6uWPxnE8bR/Jtp2GcsP1ZgAAAABJRU5ErkJggg==' center-y='26' name='Empty' id='10'/>
            </item>
            <item>
              <costume center-x='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==' center-y='26' name='X' id='11'/>
            </item>
            <item>
              <costume center-x='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==' center-y='26' name='O' id='12'/>
            </item>
          </list>
        </costumes>
        <sounds>
          <list struct='atomic' id='13'/>
        </sounds>
        <blocks/>
        <variables>
          <variable name='position number'>
            <l>10</l>
          </variable>
        </variables>
        <scripts>
          <script x='71.26666666666665' y='63.200000000000045'>
            <block s='receiveGo'/>
            <block s='removeClone'/>
          </script>
          <script x='431.26666666666665' y='28.80000000000001'>
            <block s='receiveInteraction'>
              <l>
                <option>clicked</option>
              </l>
            </block>
            <block s='doIfElse'>
              <block s='reportEquals'>
                <block s='getCostumeIdx'/>
                <l>1</l>
              </block>
              <script>
                <block s='doIfElse'>
                  <block var='X&apos;s turn?'/>
                  <script>
                    <block s='doReplaceInList'>
                      <block var='position number'/>
                      <block var='board'/>
                      <l>x</l>
                    </block>
                    <block s='doSwitchToCostume'>
                      <l>X</l>
                    </block>
                  </script>
                  <script>
                    <block s='doSwitchToCostume'>
                      <l>O</l>
                    </block>
                    <block s='doReplaceInList'>
                      <block var='position number'/>
                      <block var='board'/>
                      <l>o</l>
                    </block>
                  </script>
                </block>
                <block s='doSetVar'>
                  <l>X&apos;s turn?</l>
                  <block s='reportNot'>
                    <block var='X&apos;s turn?'/>
                  </block>
                </block>
              </script>
              <script>
                <block s='bubble'>
                  <l>Hello!</l>
                </block>
              </script>
            </block>
            <block s='doIfElse'>
              <custom-block s='won? %s'>
                <l>x</l>
              </custom-block>
              <script>
                <block s='bubble'>
                  <l>X wins!</l>
                </block>
              </script>
              <script>
                <block s='doIfElse'>
                  <custom-block s='won? %s'>
                    <l>o</l>
                  </custom-block>
                  <script>
                    <block s='bubble'>
                      <l>0 wins!</l>
                    </block>
                  </script>
                  <script>
                    <block s='doIf'>
                      <block s='reportNot'>
                        <block s='reportListContainsItem'>
                          <block var='board'/>
                          <l>empty</l>
                        </block>
                      </block>
                      <script>
                        <block s='bubble'>
                          <l>Cats game</l>
                        </block>
                      </script>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
          <script x='21' y='137.66666666666669'>
            <block s='receiveGo'/>
            <block s='doSwitchToCostume'>
              <l>Empty</l>
            </block>
            <block s='doWait'>
              <l>.1</l>
            </block>
            <custom-block s='makeBoard'/>
            <block s='doSetVar'>
              <l>X&apos;s turn?</l>
              <block s='reportBoolean'>
                <l>
                  <bool>true</bool>
                </l>
              </block>
            </block>
            <block s='doSetVar'>
              <l>board</l>
              <block s='reportNewList'>
                <list>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                  <l>Empty</l>
                </list>
              </block>
            </block>
          </script>
        </scripts>
      </sprite>
      <watcher x='5' color='243,118,29' style='normal' var='X&apos;s turn?' y='5' hidden='true'/>
      <watcher style='normal' x='11' color='243,118,29' var='board' y='25' extX='80' extY='70'/>
    </sprites>
  </stage>
  <hidden/>
  <headers/>
  <code/>
  <blocks>
    <block-definition s='label %&apos;text&apos; of size %&apos;size&apos;' category='pen' type='command'>
      <comment x='0' w='90' collapsed='false' y='0'>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/>
      <code/>
      <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),    context = stage.penTrails().getContext(&apos;2d&apos;),    rotation = radians(this.direction() - 90),    trans = new Point(      this.center().x - stage.left(),      this.center().y - stage.top()    ),    isWarped = this.Warped,    len,    pos;if (isWarped) {endWarp(); }context.save();context.font = size + &apos;px monospace&apos;;context.textAlign = &apos;left&apos;;context.textBaseline = &apos;alphabetic&apos;;context.fillStyle = this.color.toString();len = context.measureText(text).width;trans = trans.multiplyBy(1 / stage.scale);context.translate(trans.x, trans.y);context.rotate(rotation);context.fillText(text, 0, 0);context.translate(-trans.x, -trans.y);context.restore();pos = new Point(  len * Math.sin(radians(this.direction())),  len * Math.cos(radians(this.direction())));pos = pos.add(new Point(this.xPosition(), this.yPosition()));this.gotoXY(pos.x, pos.y, false);this.changed();if (isWarped) {this.startWarp(); }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;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%repRing'/>
        <input type='%mult%l'/>
      </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/>
                        </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/>
                        </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/>
                          </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/>
                            </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;' category='lists' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportEquals'>
            <block var='data'/>
            <block s='reportNewList'>
              <list/>
            </block>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='keep items such that %&apos;pred&apos; from %&apos;data&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%predRing'/>
        <input type='%l'/>
      </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/>
                  </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;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%repRing'/>
        <input type='%l'/>
      </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;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%b'/>
        <input type='%anyUE'/>
        <input type='%anyUE'/>
      </inputs>
      <script>
        <block s='doIfElse'>
          <block var='test'/>
          <script>
            <block s='doReport'>
              <block s='evaluate'>
                <block var='true'/>
                <list/>
              </block>
            </block>
          </script>
          <script>
            <block s='doReport'>
              <block s='evaluate'>
                <block var='false'/>
                <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;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%n'>1</input>
        <input type='%n'>10</input>
        <input type='%cs'/>
      </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/>
              </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/>
              </block>
            </block>
          </script>
        </block>
        <block s='doSetVar'>
          <l>i</l>
          <block var='start'/>
        </block>
        <block s='doUntil'>
          <block s='evaluate'>
            <block var='tester'/>
            <list/>
          </block>
          <script>
            <block s='doRun'>
              <block var='action'/>
              <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;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%mult%txt'/>
      </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/>
                <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/>
                <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/>
                  <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/>
            </list>
          </block>
        </script>
      </scripts>
    </block-definition>
    <block-definition s='list $arrowRight sentence %&apos;data&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </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;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'/>
      </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;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%cs'/>
      </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/>
              </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;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>catchtag</input>
      </inputs>
      <script>
        <block s='doRun'>
          <block var='cont'/>
          <list/>
        </block>
      </script>
    </block-definition>
    <block-definition s='catch %&apos;tag&apos; %&apos;value&apos;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%anyUE'/>
      </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/>
                </block>
              </block>
            </script>
            <list>
              <l>cont</l>
            </list>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='throw %&apos;tag&apos; %&apos;value&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>catchtag</input>
        <input type='%s'/>
      </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;' category='lists' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%upvar'/>
        <input type='%l'/>
        <input type='%cs'/>
      </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' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%boolUE'/>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doDeclareVariables'>
          <list>
            <l>breakpoint</l>
          </list>
        </block>
        <block s='doIf'>
          <block s='evaluate'>
            <block var='test'/>
            <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/>
            </block>
            <block s='doPauseAll'/>
            <block s='doHideVar'>
              <l/>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='word $arrowRight list %&apos;word&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%txt'/>
      </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;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
    </block-definition>
    <block-definition s='tell %&apos;sprite&apos; to %&apos;action&apos;' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>Sprite</input>
        <input type='%cs'/>
      </inputs>
      <script>
        <block s='doRun'>
          <block s='reportAttributeOf'>
            <block var='action'/>
            <block var='sprite'/>
          </block>
          <list/>
        </block>
      </script>
    </block-definition>
    <block-definition s='ask %&apos;sprite&apos; for %&apos;expression&apos;' category='control' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'>Sprite</input>
        <input type='%repRing'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='evaluate'>
            <block s='reportAttributeOf'>
              <block var='expression'/>
              <block var='sprite'/>
            </block>
            <list/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='list $arrowRight word %&apos;list&apos;' category='operators' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </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' category='control' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doSetVar'>
          <l>position number</l>
          <l>1</l>
        </block>
        <block s='show'/>
        <block s='gotoXY'>
          <l>-50</l>
          <l>50</l>
        </block>
        <block s='doFor'>
          <l>row</l>
          <l>1</l>
          <l>3</l>
          <script>
            <block s='doFor'>
              <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>
            </block>
            <block s='changeXPosition'>
              <l>-150</l>
            </block>
            <block s='changeYPosition'>
              <l>-50</l>
            </block>
            <block s='doWait'>
              <l>.2</l>
              <comment collapsed='true' w='181.33333333333334'>Wait for old clones to be deleted.</comment>
            </block>
          </script>
        </block>
        <block s='hide'/>
      </script>
    </block-definition>
    <block-definition s='TicTacToe wins' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <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>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>2</l>
                  <l>5</l>
                  <l>8</l>
                </list>
              </block>
              <block s='reportNewList'>
                <list>
                  <l>1</l>
                  <l>4</l>
                  <l>7</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 Triples %&apos;Triple&apos;' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%l'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportMap'>
            <block s='reifyReporter'>
              <autolambda>
                <block s='reportListItem'>
                  <l/>
                  <block var='board'/>
                </block>
              </autolambda>
              <list/>
            </block>
            <block var='Triple'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='Status of Winning Triples' category='lists' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <block s='reportMap'>
            <block s='reifyReporter'>
              <autolambda>
                <custom-block s='Status of Triples %l'>
                  <l/>
                </custom-block>
              </autolambda>
              <list/>
            </block>
            <custom-block s='TicTacToe wins'/>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='won? %&apos;won&apos;' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs>
        <input type='%s'/>
      </inputs>
      <script>
        <block s='doReport'>
          <block s='reportListContainsItem'>
            <custom-block s='Status of Winning Triples'/>
            <block s='reportNewList'>
              <list>
                <block var='won'/>
                <block var='won'/>
                <block var='won'/>
              </list>
            </block>
          </block>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables>
    <variable name='X&apos;s turn?'>
      <bool>true</bool>
    </variable>
    <variable name='board'>
      <list struct='atomic' id='834'>Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty,Empty</list>
    </variable>
  </variables>
</project><media name="U3L3-Tic-Tac-Toe" app="Snap! 5.1, http://snap.berkeley.edu" version="1"></media></snapdata>