<snapdata remixID="9312816"><project name='Unit 3 - Tic Tac Toe' app='Snap! 5.4, http://snap.berkeley.edu' version='1'>
  <notes>click the flag to start again</notes>
  <thumbnail>data:image/png;base64,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</thumbnail>
  <stage inheritance='false' penlog='false' volume='100' height='360' tempo='60' lines='round' width='480' sublistIDs='false' name='Stage' threadsafe='false' codify='false' id='1' 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 id='2' struct='atomic'/>
    </costumes>
    <sounds>
      <list id='3' struct='atomic'/>
    </sounds>
    <variables/>
    <blocks/>
    <scripts/>
    <sprites>
      <sprite x='1000' pen='tip' id='8' y='1000' name='Square' idx='1' volume='100' rotation='1' scale='1' heading='90' costume='2' color='80,80,80,1' pan='0' draggable='false'>
        <costumes>
          <list id='9'>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAAxklEQVRoQ+2awQnCQBQFf3rYArYUa1HWokRrydUQPNiRIFjAuwxxmdyHlz+TY5aa7Fmq6lRV6wx39d5f34POl7E+7re/vum57XUd4+1BR81ooaOW+b2XhSwEG/CTg4XHcxaKlcGAhWDh8ZyFYmUwYCFYeDxnoVgZDFgIFh7PWShWBgMWgoXHcxaKlcGAhWDh8ZyFYmUwYCFYeDxnoVgZDFgIFh7PWShWBgMWgoXHcxaKlcGAhWDh8ZyFYmUwMHehWf5obK1tH3f6nX3fT8lxAAAAAElFTkSuQmCC' center-y='26' name='Empty' id='10'/>
            </item>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAACBElEQVRoQ+3au0/CUBQG8MNGQyLORA0jOzEyOhGD1IT4KCoYIsjqc3A04maM/wabo6O6aUxw8bH6StQRN+JiSoIRpXLuvef0tghbkz7u737tDV/aAABETTOzHQoFg+DzX6PxcR0AgPF4fPS4sFz0Nejt9QWuarWHJsiyrKNqtTro54DOLy5hr1Lpgzwb4v9M6PHpGUaGhzyVitOYUAkVS2WIRCJQ2d3xBOrm9g7MdBr2Dw5hOjPVNiYUqF5/h9JKGWKxmHZUC7OYy3ccCwpkT4EXUN0w9jjRIN0oDEYYpAuFxUiB3EaJYKRBbqFEMUogbpQMRhnEhZLFkICoUSoYMhAVShVDClJFUWDIQbIoKgwLSBRFiWEDYVHUGFZQNxQHhh3khOLCuAL6icpmrWY5c+ozbW1NYkOoPkic/+sQu0/l8ktwdnoCq2vrbEXRNZB9m02mUmAYBszMzvkb9P2Z2drcYK3z7Al1WgA46zwr6K/VjAvFBsIszRwoFhAG01r+qFHkIBEMB4oUJIOhRpGBVDCUKBIQBYYKpQyixFCglEAcGFWUNIgTo4KSArmBkUUJg9zEyKCEQDowoig0SCdGBIUCeQGDRaFAyeQEjCUSbC1TtNq3/tBm5xfkXhp78bW+jQqHB37NBSoh0RnUuX8fpHP2Mdfu7YR67QPAKAAUMLH6YJ/7TyzYfEIgZj0hAAAAAElFTkSuQmCC' center-y='26' name='X' id='11'/>
            </item>
            <item>
              <costume center-x='26' image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAEX0lEQVRoQ+2aS0wTURSG/64VcMEOQR4C9bGwRaMbRdEQI/iKGgUfMUpBiAuJ0bihlLIxSMWF8UExMSpQfMQHmBiiILrwgbSaCKIkGsHnjoeuMWfMTVo607kzc6cgMknTRe89c77znzn33jO1YJpdFgCrAXROB67k5OQeCejAQUfnpYb6f5rp+YtuFDscb2aApqqMMwrxKtP+sAN+fwADH96js+MRPn36GDZ1+46dSEhIwBKbHTlrspGUOJfXvOI4oQoNDn2B19uAxmtXkbV0mfSx222wZmbIOks373//Aa8Dfty7e0cav6ugENu2btINJgQoGKT4UBkKC3bqivat2/fga27CyPAwSkrLdIEZBrp8pRFulxMEUlriQFxcrO7osomUrrU1NUhMSkJlpVNTcHQDjYyMotJVhb7eXrirq7Fi+TLDIMEGyP75i17UXziHC/Ve5K7L4bKvC4huVuQoRmxsLE57aoWoouQtpeGxo+U45anjSkHNQAzGarWi2u3iiprRQb1977AxP58LSjPQwaJixMTE4Eydx6ifmuYT1OJFC/Hs+cuI6a0J6Oy5i+h63IkGb72paaaWfoFAQPH+3EAsQm97+7Bo4QJN0RU5+Ej5UcmcUoZwA1Gq2exZOFxWItI/zbboGbbZbGhq9smmHhcQDSos2IVIUmv2zMAESv2AvwdyRx0uIJJ5fnrGpKvDYsBUam1rC0t/VSDa1sxLSsTw8MikFAIlIU/WePD711jY0qEKRFsb2jxGu0yrZSQVqfIj5WhvfxAyVBWI0m3lqmyuVVrNCdG/p6amYWLaqQLJTRLtmF57csFWBbJYLBgfH9d7T1PnUbWjK3gpiQhEP3o8Hty47jPVMb3G6ZjR4vOFlG9VIK/XK1vv9Tohch45P9G/GSCRETZqS7NCSrXeqCOi5tPh7+mTrpA18v+qchTJ3Nz1pvQMRKhEJ4ANefkhi76qQhVOF9Lmp2P/vt0ifBBqgxb9x11dIV0hVSDWK5tqaxFrdWney9FWfc6cOHweHNLUHxMqhYwxypxZs2Nw4vjfEyy7VBWigUqTzXZayX6kIHMB0ZlodXb2lDqx/vzxXbaNxgXEVKLvaPXilNRhB06lR4AbiKmk1JyIVvpRqU7PyAx7djQ9Q2wwa8tOVrOEjt09r7oj9gW5FWJQVCD6+/uj3mxkwZRrjGiuchPTKdpQvDDkp2aFJirlclWa2kmlU+np2pqw3oHSM6sbiAxSTtP7G6fLLXxrREWoqsqNocFB1J2p4w6aISAmsbOiQnrb5nA4DL/4okXzamOzpIqet4KGgQgq2Ik1OWvDdsA8JZ0UaWpukRQnG3qDIwSIOUxgt++24n5bq1ReN23eIrWQl2bZpSELrJlS95UOjmNjv/D123cMDAxIY+mze89e5OXlGVJZKFCwEhTx7ld+yWH6r8Lo6Chu3miRhqSkpEoq0IszBizqHa1pQDxpZsaYGSAzoirS5vRWaLr8ozE+Pv7FH9+DiZuv1w8nAAAAAElFTkSuQmCC' center-y='26' name='O' id='12'/>
            </item>
          </list>
        </costumes>
        <sounds>
          <list id='13' struct='atomic'/>
        </sounds>
        <blocks/>
        <variables>
          <variable name='clone number'>
            <l>0</l>
          </variable>
        </variables>
        <scripts>
          <script x='10' y='10'>
            <block s='receiveGo'/>
            <block s='gotoXY'>
              <l>-50</l>
              <l>50</l>
            </block>
            <block s='doSwitchToCostume'>
              <l>Empty</l>
            </block>
            <custom-block s='make Tic Tac Toe board'/>
            <block s='gotoXY'>
              <l>1000</l>
              <l>1000</l>
            </block>
            <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>
            <block s='doSetVar'>
              <l>clone number</l>
              <l>0</l>
            </block>
            <block s='doSetVar'>
              <l>winning triples</l>
              <block s='reportNewList'>
                <list>
                  <block s='reportNewList'>
                    <list>
                      <l>1</l>
                      <l>2</l>
                      <l>3</l>
                    </list>
                  </block>
                  <block s='reportNewList'>
                    <list>
                      <l>2</l>
                      <l>5</l>
                      <l>8</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>3</l>
                      <l>6</l>
                      <l>9</l>
                    </list>
                  </block>
                  <block s='reportNewList'>
                    <list>
                      <l>9</l>
                      <l>5</l>
                      <l>1</l>
                    </list>
                  </block>
                  <block s='reportNewList'>
                    <list>
                      <l>3</l>
                      <l>5</l>
                      <l>7</l>
                    </list>
                  </block>
                </list>
              </block>
            </block>
          </script>
          <script x='451' y='10.799999999999955'>
            <block s='receiveInteraction'>
              <l>
                <option>clicked</option>
              </l>
            </block>
            <block s='doIf'>
              <block s='reportEquals'>
                <block s='getCostumeIdx'/>
                <l>1</l>
              </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='doSetVar'>
                      <l>X&apos;s turn?</l>
                      <block s='reportBoolean'>
                        <l>
                          <bool>false</bool>
                        </l>
                      </block>
                    </block>
                    <block s='doReplaceInList'>
                      <block var='clone number'/>
                      <block var='board'/>
                      <l>X</l>
                    </block>
                    <block s='doIf'>
                      <custom-block s='x wins?'/>
                      <script>
                        <block s='doSayFor'>
                          <l>X is the winner</l>
                          <l>2</l>
                        </block>
                      </script>
                    </block>
                  </script>
                  <script>
                    <block s='doSwitchToCostume'>
                      <l>O</l>
                    </block>
                    <block s='doSetVar'>
                      <l>X&apos;s turn?</l>
                      <block s='reportBoolean'>
                        <l>
                          <bool>true</bool>
                        </l>
                      </block>
                    </block>
                    <block s='doReplaceInList'>
                      <block var='clone number'/>
                      <block var='board'/>
                      <l>O</l>
                    </block>
                    <block s='doIf'>
                      <custom-block s='O wins?'/>
                      <script>
                        <block s='doSayFor'>
                          <l>O is the winner</l>
                          <l>2</l>
                        </block>
                      </script>
                    </block>
                  </script>
                </block>
                <block s='doIf'>
                  <custom-block s='draw'/>
                  <script>
                    <block s='doSayFor'>
                      <l>There is a draw</l>
                      <l>2</l>
                    </block>
                  </script>
                </block>
              </script>
            </block>
          </script>
        </scripts>
      </sprite>
      <watcher hidden='true' x='10' s='xPosition' style='normal' color='74,108,212' y='10' scope='Square'/>
      <watcher hidden='true' x='10' s='yPosition' style='normal' color='74,108,212' y='31.000001999999995' scope='Square'/>
      <watcher x='10' color='243,118,29' style='normal' hidden='true' y='52.00000399999999' var='X&apos;s turn?'/>
      <watcher var='board' x='10' color='243,118,29' style='normal' y='76.00000599999998' extX='80' extY='70'/>
      <watcher hidden='true' x='10' color='243,118,29' style='normal' y='169.00000799999998' var='clone number' scope='Square'/>
      <watcher x='10' color='243,118,29' style='normal' hidden='true' y='190.00000999999997' var='winning triples'/>
      <watcher x='10' color='243,118,29' style='normal' hidden='true' y='338.999998' var='x wins'/>
    </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 category='control' s='ignore %&apos;x&apos;' 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='make ONE row' category='motion' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doRepeat'>
          <l>3</l>
          <script>
            <block s='doChangeVar'>
              <l>clone number</l>
              <l>1</l>
            </block>
            <block s='createClone'>
              <l>
                <option>myself</option>
              </l>
            </block>
            <block s='changeXPosition'>
              <l>50</l>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='make Tic Tac Toe board' category='motion' type='command'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doRepeat'>
          <l>3</l>
          <script>
            <custom-block s='make ONE row'/>
            <block s='changeXPosition'>
              <l>-150</l>
            </block>
            <block s='changeYPosition'>
              <l>-50</l>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
    <block-definition s='Xs turn?' category='variables' type='reporter'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doReport'>
          <l/>
        </block>
      </script>
    </block-definition>
    <block-definition s='x wins?' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <custom-block s='for each %upvar of %l %cs'>
          <l>triple</l>
          <block var='winning triples'/>
          <script>
            <block s='doIf'>
              <block s='reportAnd'>
                <block s='reportEquals'>
                  <block s='reportListItem'>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='triple'/>
                    </block>
                    <block var='board'/>
                  </block>
                  <l>x</l>
                </block>
                <block s='reportAnd'>
                  <block s='reportEquals'>
                    <block s='reportListItem'>
                      <block s='reportListItem'>
                        <l>2</l>
                        <block var='triple'/>
                      </block>
                      <block var='board'/>
                    </block>
                    <l>x</l>
                  </block>
                  <block s='reportEquals'>
                    <block s='reportListItem'>
                      <block s='reportListItem'>
                        <l>3</l>
                        <block var='triple'/>
                      </block>
                      <block var='board'/>
                    </block>
                    <l>x</l>
                  </block>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportBoolean'>
                    <l>
                      <bool>true</bool>
                    </l>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </custom-block>
        <block s='doReport'>
          <block s='reportBoolean'>
            <l>
              <bool>false</bool>
            </l>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='O wins?' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <custom-block s='for each %upvar of %l %cs'>
          <l>triple</l>
          <block var='winning triples'/>
          <script>
            <block s='doIf'>
              <block s='reportAnd'>
                <block s='reportEquals'>
                  <block s='reportListItem'>
                    <block s='reportListItem'>
                      <l>1</l>
                      <block var='triple'/>
                    </block>
                    <block var='board'/>
                  </block>
                  <l>o</l>
                </block>
                <block s='reportAnd'>
                  <block s='reportEquals'>
                    <block s='reportListItem'>
                      <block s='reportListItem'>
                        <l>2</l>
                        <block var='triple'/>
                      </block>
                      <block var='board'/>
                    </block>
                    <l>o</l>
                  </block>
                  <block s='reportEquals'>
                    <block s='reportListItem'>
                      <block s='reportListItem'>
                        <l>3</l>
                        <block var='triple'/>
                      </block>
                      <block var='board'/>
                    </block>
                    <l>o</l>
                  </block>
                </block>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportBoolean'>
                    <l>
                      <bool>true</bool>
                    </l>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </custom-block>
        <block s='doReport'>
          <block s='reportBoolean'>
            <l>
              <bool>false</bool>
            </l>
          </block>
        </block>
      </script>
    </block-definition>
    <block-definition s='draw' category='operators' type='predicate'>
      <header/>
      <code/>
      <translations/>
      <inputs/>
      <script>
        <block s='doIfElse'>
          <block s='reportOr'>
            <custom-block s='x wins?'/>
            <custom-block s='O wins?'/>
          </block>
          <script>
            <block s='doReport'>
              <block s='reportBoolean'>
                <l>
                  <bool>false</bool>
                </l>
              </block>
            </block>
          </script>
          <script>
            <block s='doIfElse'>
              <block s='reportListContainsItem'>
                <block var='board'/>
                <l>Empty</l>
              </block>
              <script>
                <block s='doReport'>
                  <block s='reportBoolean'>
                    <l>
                      <bool>false</bool>
                    </l>
                  </block>
                </block>
              </script>
              <script>
                <block s='doReport'>
                  <block s='reportBoolean'>
                    <l>
                      <bool>true</bool>
                    </l>
                  </block>
                </block>
              </script>
            </block>
          </script>
        </block>
      </script>
    </block-definition>
  </blocks>
  <variables>
    <variable name='X&apos;s turn?'>
      <bool>true</bool>
    </variable>
    <variable name='board'>
      <list id='929' struct='atomic'>O,O,X,O,X,X,O,X,O</list>
    </variable>
    <variable name='winning triples'>
      <list id='930'>
        <item>
          <list id='931' struct='atomic'>1,2,3</list>
        </item>
        <item>
          <list id='932' struct='atomic'>2,5,8</list>
        </item>
        <item>
          <list id='933' struct='atomic'>4,5,6</list>
        </item>
        <item>
          <list id='934' struct='atomic'>7,8,9</list>
        </item>
        <item>
          <list id='935' struct='atomic'>1,4,7</list>
        </item>
        <item>
          <list id='936' struct='atomic'>3,6,9</list>
        </item>
        <item>
          <list id='937' struct='atomic'>9,5,1</list>
        </item>
        <item>
          <list id='938' struct='atomic'>3,5,7</list>
        </item>
      </list>
    </variable>
    <variable name='x wins'>
      <l>0</l>
    </variable>
  </variables>
</project><media name="Unit 3 - Tic Tac Toe" app="Snap! 5.4, http://snap.berkeley.edu" version="1"></media></snapdata>