0  ,]']±>Sï}WÿÍu§ðp8·d%qyº•Y;]ÉA¦öÖÚHôôô”°ÂVl†3<W
0      ÿÿÿÿ    ÿÿÿÿ2Tv˜ºÜþïÍ«‰gE#2Tv˜ºÜþ2Tv˜ºÜþ¼ fffffffffffffffffffff†ˆffˆˆfffffffffff"ffflffflffflff†ˆffˆˆfffff        2#  #2  #2  2#        fffffffffffffffffffffffff€fffffffffffffffffffffffffffffffffffffffffffofföoffÿofffofffoffÿÿffffffffffÿÿffföffÿÿffofffofffÿÿffffffffffÿÿffoöfffÿffoöffoöffÿÿfffffffffffofföoffooffÿÿfffofffoffffffffffÿÿffofffÿÿffföffföffÿÿffffffffffÿÿffofffÿÿffoöffoöffÿÿffffffffffÿÿffföffföffföffföffföffffffffffÿÿffoöffÿÿffoöffoöffÿÿffffffffffÿÿffoöffÿÿffföffföffÿÿffffffffffÿÿffoöffoöffoöffoöffÿÿfffff                                #L#L  0     À  @  0   2Ä2Ä                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ªÊÌ0ª<Ý Ã=Ý :== Ü3Ó0333 Ü3Ó    ÌÌª
<Ý¬
ÓÝÍ
ÜÝÝÜÝÝ3ÝÝÜÝÝ     ªÌÌ ÊÝÃ ÜÝ=ÀÝÝÍÀÝÝÍÀÝÝ3ÀÝÝÍ    Ì¬ª
ÝÃªÝÓ<
ÓÓ£
=3Í
333=3Í
     ªªª ªªª ªªª ªªª ªªª ªªª ªªŠ    ª:£
ª:3
ªŠ3ªˆ8Šˆª
ˆ¨ª
ˆªª
     ªÊ, ªÊ, ªÊ, ªÊ, ªÊ, ªÊ¬ ªÊ¬    ªª""""
"""
""¢
"¢ª
ªªª
ªªª
     ªªª ªªª   ª    À  ÐÌ ÐÌÌ    ªªª
ªªª
ªªª
ªªª
ªªª
 ªª
 ªª
     ªªª ªªª ªªª ªªª ªªÊ ªªÌ ªªÌ    ªªª
ªªª
ªªª
¬ªª
,ªª
"¢ª
""ª
     ªªª ªªª ªªª ªªª ªªª ªªª ªªª    ªªª
ªªª
ªªª
ªªª
ªªª
ªªª
ªªª
     """ ""Ì "ÂÌ "ÌÌ ÂÌÌ ÂÀ ÂÀ    """Ì""Ì,"ÌÌ"ÌÌ,À,À, <<< ã>î0ì>î ìîî ìîî Êîî Êîî    ÌÌÌãîî>îîîîîîîîîîÎ
îîÎ
    ÀÌÌÌÀîî>ÀîîãÀîîîÀîîî ìîî ìîî    ÃÃÃ
îã>
îãÎîîÎ
îîÎ
îî¬
îî¬
     ªªˆ ªŠˆ îŽ¨àîÞªàîÝªàÞÝªàÝ­ª    ¨ªª
ªªª
ªªª
ªªª
ªªª
ªªª
ªªª
     ªÊ¬ ªÊ¬ £Ê¬ :Ê¬ ªÊ¬ :33 333    ªªª
ªªª
:ªª
£ªª
ªªª
£ªª
3ªª
    ÀÌÍÌÀÜÌÂÀÌ,ÌÀÌÂÜÀ,ÌÍÀÂÌÌ ÌÌÌ      ª
 ª
 ª
Ì ª
Ì  
Ì 
Ý 
     ªÊ, ªÊ, ªÌª ªÌª Ê¬ª Ê¬ª Ìªª    ""ª
""¢
"""
ª""
ª*"
ªª¢
ªªª
     ªªª`f†ˆ`†ˆˆ`ˆÝ-€ØýÿÐÝÿÿðÿÿÿ    ªªª
ˆhfˆˆhÒÝˆÿß�ÿÿÝÿÿÿ     ÂÌÌ "Ì "ÂÌ "Â  "ÂÌ ""Ì """    ÌÌ,ÀÌ"Ì," ,"Ì,"Ì"""""    DDDD                DDDD @ 0 @ @  @0  @0  @   @     ªªŠ ªªŠ ªªŠ ªªŠ ªªŠ ªªŠ ªªŠ    ¨ªª
¨ªª
¨ªª
¨ªª
¨ªª
¨ªª
¨ªª
     ªªª ªªª ªªª0333 ªªªàîîîP^åU    ªªª
ª£ª
ª£ª
33£
ª£ª
®£ª
®£ª
                                                                                                                                                                                                                                                                                                                                                     DDDD   @   @   @
  @   @   @ 
 @DDDD ªªŠ £Ú� :ÚÝ ªÚÝ ªÓÝ :3Ý 333    ¨ªª
è®:
î®£
î®ª
î>ª
î3£
333
    P^åUàîîîP^åUP^åUàîîîP^åUP^åU    ®£ª
®£ª
®£ª
®£ª
®£ª
®£ª
®£ª
	>                                                                À? îîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîî                                                                àîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªªªîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªªªîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿ        ÿÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿ ªªªªªª
ÿÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿ ªªªªªª
ÿÝ                        Ðýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿ   ªªªª
ÿÝ  »»»   »»»   »»»   »»» Ðýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿ    ªªª
ÿÝ  »»»   »»»   »»»   »»» Ðýÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîªªîîîîîîÿÿÀ  ªªª
ÿÝ »» »» »» »» »» »» »» »»ÐýÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîªªîîîîîîÿÿÐÌ  ªª
ÿÝ »» »» »» »» »» »» »» »»ÐýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿÐÌÌ ªª
ÿÝ »»» » »»» » »»» » »»» »ÐýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÀÌÍÌ  ª
ÿÝ »»» » »»» » »»» » »»» »ÐýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÀÜÌÂ ª
ÿÝ »»  » »»  » »»  » »»  »ÐýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÀÌ,Ì ª
ÿÝ »»  » »»  » »»  » »»  »ÐýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÀÌÂÜÌ ª
ÿÝ  »»»   »»»   »»»   »»» ÐýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªªªîîîîîÿÿÀ,ÌÍÌ  
ÿÝ  »»»   »»»   »»»   »»» Ðýÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîªªªªîîîîîÿÿÀÂÌÌÌ 
ÿÝ                        Ðýÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîªªîîîîîîÿÿ ÌÌÌÝ 
ÿÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿ        ÿÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªªªîîîîî                                       îîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîªªªªîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîßÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªªîîîîîßÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªªîîîîîß               ÐýîÿÿÿÝ          Ðýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªîîªîîîîß » »»    » »»ÐýîÿÿÿÝ °» »»°» Ðýÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîªªîîªîîîîß°» »  »°°» »  ÐýîÿÿÿÝ »° °»°Ðýÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîªªîîîîîîîß » »» °»  » »» ÐýîÿÿÿÝ » » »Ðýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªîîîîîîîß »  °°»  »  °ÐýîÿÿÿÝ » °» Ðýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªîîªîîîîß°»»» »°°»»» ÐýîÿÿÿÝ °» °» °» Ðýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîªªîîªîîîîß               ÐýîÿÿÿÝ          ÐýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªªîîîîîßÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîªªªîîîîîßÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝýîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffff33333333333333333333cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆf£ªªªªªªªªªªªªªªªªªªªc†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆf£333333333333333333£cˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿ       ðÿÿÿÿÿîÿÿÿÿÿ       ðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîî.âîîî.âîîîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîî.âîîî.âîîîÿÿÿÿÿªªªª:ªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ        ÿÿÿÿÿ£cfffffffffffffffffffffàîîî.23#âîîîîÿÿÿÿÿªªªª:ªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ ªÊÌÌÌª
ÿÿÿÿÿ£cfffffffffffffffffffffàîîî.23#âîîîîÿÿÿÿÿ333333ªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆf£óÿÿÿÿ0ª<Ý<Ý¬
ÿÿÿÿÿ£c†ˆff†ˆff†ˆff†ˆff†ˆfffàîîî>#"2ãîîîîÿÿÿÿÿªªªª:ªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆf£óÿÿÿÿ Ã=ÝÓÝÍ
ÿÿÿÿÿ£cˆˆffˆˆffˆˆffˆˆffˆˆfffàîîî>#"2ãîîîîÿÿÿÿÿîîîî:ªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ :==ÜÝÝÿÿÿÿÿ£cfffffffffffffffffffffàîîî>#"2ãîîîîÿÿÿÿÿåU^å:ªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ Ü3ÓÜÝÝÿÿÿÿÿ£cfffffffffffffffffffffàîîî>#"2ãîîîîÿÿÿÿÿåU^å:ªªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ03333ÝÝÿÿÿÿÿ£cfffffffffffffffffffffàîîî.23#âîîîîÿÿÿÿÿîîîî:ªªðÿÿÿÿÿîÿÿÿÿÿffˆˆˆffðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ Ü3ÓÜÝÝÿÿÿÿÿ£cfffffffffffffffffffffàîîî.23#âîîîîÿÿÿÿÿåU^å:ªªðÿÿÿÿÿîÿÿÿÿÿfˆˆˆˆˆfðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ <<<ÌÌÌÿÿÿÿÿ£cfffffffffffffffffffffàîî.âîîî.âîîîÿÿÿÿÿåU^å:ªªðÿÿÿÿÿîÿÿÿÿÿ†ØÝ"Ý�hðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ ã>îãîîÿÿÿÿÿ£cfffffffffffffffffffffàîî.âîîî.âîîîÿÿÿÿÿîîîî:ªªðÿÿÿÿÿîÿÿÿÿÿˆÝÿÿÿÝˆðÿÿÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆf£óÿÿÿÿ0ì>î>îîÿÿÿÿÿ£c†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîîîîîîîîîÿÿÿÿÿåU^å:ªªðÿÿÿÿÿîÿÿÿÿÿÝýÿÿÿßÝðÿÿÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆf£óÿÿÿÿ ìîîîîîÿÿÿÿÿ£cˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîîîîîîîîîÿÿÿÿÿåU^å:ªªðÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ ìîîîîîÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿ       ðÿÿÿÿÿîÿÿÿÿÿ       ðÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ ÊîîîîÎ
ÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ ÊîîîîÎ
ÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿ        ÿÿÿÿÿ£cfffffffffffffffffffffàîîîî>3ãîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîî3ãîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîî3ãîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîfff†ˆff†ˆff†ˆff†ˆff†ˆf£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£c†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîî33îîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîfffˆˆffˆˆffˆˆffˆˆffˆˆf£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffff£ó/"ò/""ÿ""/"ò"ÿò"ÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffff£ó/ò//òÿ/òÿÿ"ÿ"òò"ÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝ          ÐýÿÿÿîÿÿÿÝ          Ðýÿÿÿîîîffffffffffffffffffffff£ó/"ò/"ò/ò"ÿ"ÿ""ò"ÿ£cfffffffffffffffffffffàîîîîãîãîîîîîÿÿÿÝ °» °» °» ÐýÿÿÿîÿÿÿÝ °» °» °» Ðýÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆf£ó/ò//òÿ/ò/ÿ"ÿ"/òÿÿ£c†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîãããîîîîîÿÿÿÝ »°»°»°ÐýÿÿÿîÿÿÿÝ »°»°»°Ðýÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆf£ó/"ò/""ÿ""/"ò"ÿò"ÿ£cˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîî33ãîîîîîÿÿÿÝ »»»ÐýÿÿÿîÿÿÿÝ »»»Ðýÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîî3>ãîîîîîÿÿÿÝ » » » ÐýÿÿÿîÿÿÿÝ » » » Ðýÿÿÿîîîffffffffffffffffffffff£óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝ °» °» °» ÐýÿÿÿîÿÿÿÝ °» °» °» Ðýÿÿÿîîîffffffffffffffffffffff£333333333333333333£cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝ          ÐýÿÿÿîÿÿÿÝ          Ðýÿÿÿîîîffffffffffffffffffffff£ªªªªªªªªªªªªªªªªªªªcfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffff33333333333333333333cfffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîÿÿÿÝÝÝÝÝÝÝÝÝÝÝÝýÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîî>3îîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3>ãîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3ãîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî>3îîîîîîÿÿÿÿÿ       ðÿÿÿÿÿîÿÿÿÿÿ       ðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿªªªªª3ªðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿªªªªª3£ðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿªªªªª83ðÿÿÿÿÿîÿÿÿÿÿªªªªªªªðÿÿÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîîîîîîîîîÿÿÿÿÿªªªªŠˆ3ðÿÿÿÿÿîÿÿÿÿÿªªªÊªªªðÿÿÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîîîîîîîîîÿÿÿÿÿªªªªˆ¨ªðÿÿÿÿÿîÿÿÿÿÿªªªÌ¢ªªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿªªªŠˆªªðÿÿÿÿÿîÿÿÿÿÿªªÊ,"ªªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî>3îîîîîîÿÿÿÿÿªªªˆ¨ªªðÿÿÿÿÿîÿÿÿÿÿªªÊ,"¢ªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3>ãîîîîîÿÿÿÿÿªªŠˆªªªðÿÿÿÿÿîÿÿÿÿÿªªÌ""¢ªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3ãîîîîîîÿÿÿÿÿªªˆ¨ªªªðÿÿÿÿÿîÿÿÿÿÿªªÌ"""ªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî>3îîîîîîÿÿÿÿÿêîˆªªªªðÿÿÿÿÿîÿÿÿÿÿªÊ¬*""¢ðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿîî­ªªªªðÿÿÿÿÿîÿÿÿÿÿªÊ¬ª*"¢ðÿÿÿÿÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîîîîîîîîîÿÿÿÿÿîÞ­ªªªªðÿÿÿÿÿîÿÿÿÿÿªÌªªª"¢ðÿÿÿÿÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîîîîîîîîîîÿÿÿÿÿîÝ­ªªªªðÿÿÿÿÿîÿÿÿÿÿªÌªªª*ªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÞÝªªªªªðÿÿÿÿÿîÿÿÿÿÿÊ¬ªªªªªðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿ       ðÿÿÿÿÿîÿÿÿÿÿ       ðÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî33îîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3îãîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3îãîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîî33îîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîî3îîîîîîî                                       îîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ        ÿ        ÿîÿ        ÿ        ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ ªÊÌÌÌª
ÿ ªªŠ¨ªª
ÿîÿ ªÌÌÌ¬ª
ÿ ªÊ,ªª"ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî>3îîîîîîÿ0ª<Ý<Ý¬
ÿ ªªŠ¨ªª
ÿîÿ ÊÝÃÝÃªÿ ªÊ,"""
ÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîî3>ãîîîîîÿ Ã=ÝÓÝÍ
ÿ ªªŠ¨ªª
ÿîÿ ÜÝ=ÝÓ<
ÿ ªÊ,"""
ÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîî3ãîîîîîîÿ :==ÜÝÝÿ ªªŠ¨ªª
ÿîÿÀÝÝÍÓÓ£
ÿ ªÊ,""¢
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî>3îîîîîîÿ Ü3ÓÜÝÝÿ ªªŠ¨ªª
ÿîÿÀÝÝÍ=3Í
ÿ ªÊ,"¢ª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ03333ÝÝÿ ªªŠ¨ªª
ÿîÿÀÝÝ3333ÿ ªÊ¬ªªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ Ü3ÓÜÝÝÿ ªªŠ¨ªª
ÿîÿÀÝÝÍ=3Í
ÿ ªÊ¬ªªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ <<<ÌÌÌÿ ªªŠ¨ªª
ÿîÿÀÌÌÌÃÃÃ
ÿ ªÊ¬ªªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ ã>îãîîÿ £Ú�è®:
ÿîÿÀîî>îã>
ÿ ªÊ¬ªªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿ0ì>î>îîÿ :ÚÝî®£
ÿîÿÀîîãîãÎÿ £Ê¬:ªª
ÿîîîfff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆff†ˆfffàîîîîîîîîîîîîÿ ìîîîîîÿ ªÚÝî®ª
ÿîÿÀîîîîîÎ
ÿ :Ê¬£ªª
ÿîîîfffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆffˆˆfffàîîîî33îîîîîîÿ ìîîîîîÿ ªÓÝî>ª
ÿîÿÀîîîîîÎ
ÿ ªÊ¬ªªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3îãîîîîîÿ ÊîîîîÎ
ÿ :3Ýî3£
ÿîÿ ìîîîî¬
ÿ :33£ªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3îîîîîîîÿ ÊîîîîÎ
ÿ 333333
ÿîÿ ìîîîî¬
ÿ 3333ªª
ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîî3îîîîîîîÿ        ÿ        ÿîÿ        ÿ        ÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffàîîîîîîîîîîîîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîî                                                                àîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîîî) ;; title:   TICsweeper
;; author:  Bill Niblock
;; desc:    Minesweeper clone
;; site:    https://vagabondazulien.itch.io/ticsweeper
;; license: MIT License
;; version: 1.5
;; script:  fennel
;; strict:  true

;; Game State:
;;		0 - Start
;;		1 - Play
;;		2 - Game Over
;;  3 - Victory!
(var (game-state gtime ptime digs flags) (values 0 0 0 0 0))

(var grid 15) ;;Grid size
(var diff 30) ;;Difficulty (number of mines)
(var victory-count (- (* grid grid) diff))
(var mines (fcollect [i 1 (* grid grid)] {:s true :m false :f false :d false :n 0}))
(var mined_spots [])

(fn mx [n] (if (= 0 (% n grid)) grid (% n grid)))
(fn my [n] (if (= 0 (% n grid)) (// n grid) (+ (// n grid) 1)))
(fn mn [x y] (+ (* (- y 1) grid) x))
(fn tile [x] (- x (% x 8)))
(fn map-tile [x] (// (tile x) 8))
(fn in-bounds [x y] (and (<= 1 (map-tile x) 15)
																									(<= 1 (map-tile y) 15)))

(fn number_in [t n]
 (var is_in false)
	(each [_ v (pairs t)] (if (= v n) (set is_in true)))
	is_in)
(fn update_neighbors [t]
	; This covers every row/column except first and last of each
	(when (and (> (% t grid) 1)
												(> (- (* grid grid) (- grid 1)) t grid))
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
		(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1))
		(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1))
		(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
		(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1))
		(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1)))

	; This covers the first column
	(when (= (% t grid) 1)
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(if 
		; This covers space 1-1
			(= t 1)
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1)))
		; This covers space grid-1
			(< (- (* grid grid) grid) t)
			(do
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1)))			
		; This covers the spaces in-between
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1))				
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1)))				
		)
	)

	; This covers the last column
	(when (= (% t grid) 0)
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(if 
		; This covers space 1-grid
			(= t grid)
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1)))		
		; This covers space grid-grid
			(< (- (* grid grid) grid) t)
			(do
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1)))
		; This covers the spaces in-between
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1))
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1)))
		)			
	)
	; This covers the top row, except 1-1 and 1-grid
	(when (< 1 t grid)
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
		(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1))	
		(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1)))	
	; This covers the top row, except 1-1 and 1-grid
	(when (< (+ (- (* grid grid) grid) 1) t (* grid grid))
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
		(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1))	
		(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1)))	
)

(fn reset-game []
	(set mines (fcollect [i 1 (* grid grid)] {:s true :m false :f false :d false :n 0}))
	;(set mined_spots [1 6 15 75 76 100 211 219 225])
	(set victory-count (- (* grid grid) diff))
	(set (gtime ptime digs flags) (values 0 0 0 0))
	(set mined_spots []))

(fn generate-mines [s]
	(while (< (length mined_spots) diff)
		(let [rnd (math.random 1 (* grid grid))]
			(when (and (not (= rnd s)) (not (number_in mined_spots rnd)))
  		(table.insert mined_spots rnd))))

	(each [_ v (pairs mined_spots)]
		(tset mines v :m true)
 	(update_neighbors v)))

(fn mt [t]
	(case t
		{:f false :d false} 256
		{:f true :d false} 257
		{:m true :f false :d true} 258
		{:f false :d true} (+ 260 t.n)))

		
(fn check-win []
	; Count spaces dug
	; If spaces dug = grid - mines => victory!
	;		- Set game state victory
	(local count 
		(length (icollect [k v (pairs mines)]
			(case v {:s true :m false :d true} k))))
	(if (>= count victory-count) (set game-state 3)))

(fn generate_neighbors [x]
	(if
		(= (% x grid) 0)
			[(- x grid) (- x (+ grid 1)) (- x 1) (+ x grid) (+ x (- grid 1))]
		(= (% x grid) 1)
			[(- x grid) (- x (- grid 1)) (+ x 1) (+ x grid) (+ x (+ grid 1))]
		;else
			[(- x (+ grid 1)) (- x grid) (- x (- grid 1)) (- x 1) (+ x 1) (+ x (- grid 1)) (+ x grid) (+ x (+ grid 1))]))
		
(fn check_empty_neighbors [spot]
	(local neighbors (generate_neighbors spot))
 		(each [_ v (ipairs neighbors)]
   	(case (?. mines v)
    	{:n 0 :d false} (do
						(tset mines v :d true)
						(set digs (+ digs 1))
						(check_empty_neighbors v))
					{:d false} (do
						(tset mines v :d true)
						(set digs (+ digs 1))))))

(var toggle-dig-gate true)
(fn toggle-dig [t s x]
	(when toggle-dig-gate
		(set toggle-dig-gate false)
		(case t
			{:s true :f true} (do (tset t :f false) (set flags (- flags 1)))
			{:s true :m true :f false} (do (tset t :d true) (set game-state 2))
			{:s true :m false :f false :d false} (do 
				(tset t :d true) (set digs (+ digs 1))
				(if (>= 1 digs) (generate-mines x))
				(if (= (?. t :n) 0) (check_empty_neighbors x))))
			(check-win)))
(var toggle-flag-gate true)
(fn toggle-flag [t s]
	(when toggle-flag-gate
		(set toggle-flag-gate false)
		(case t
			{:f false :d false} (do (tset t :f true) (set flags (+ flags 1))))))
		

(var debug false)
(fn show-debug [x y]
	(when debug
		(print (.. "Mouse: " x "," y) 150 90 2)
		(print (.. "Tile: " (map-tile x) "," (map-tile y)) 150 97 2)
		(each [k v (pairs mined_spots)]
   (spr 272 (* (mx v) 8) (* (my v) 8) 0 1)
   (print "Mines Marked" 150 106 2))
  (print (.. "Victory Count: " victory-count) 150 115 2)))

(fn start-menu [x y b]
	(rect 48 44 41 40 15)
	(rectb 48 44 41 40 3)
	(rectb 49 45 39 38 10)
	(rectb 50 46 37 36 3)
	(spr 304 60 51 -1 1 0 0 2 2) 
	(print "BEGIN!" 53 74 2)
	(when b (set game-state 1)))
	
(var toggle-new-gate true)
(fn game-over-menu [x y b]
	(rect 16 12 104 24 15)
	(rectb 16 12 104 24 3)
	(rectb 17 13 102 22 10)
	(rectb 18 14 100 20 3)
	(spr 318 20 16 -1 1 0 0 2 2)
	(print "GAME" 57 19 2)
	(print "OVER" 57 25 2)
	(spr 318 100 16 -1 1 0 0 2 2)
	(rect 48 44 41 40 15)
	(rectb 48 44 41 40 3)
	(rectb 49 45 39 38 10)
	(rectb 50 46 37 36 3)
	(spr 306 60 51 -1 1 0 0 2 2) 
	(print "AGAIN?" 52 74 2)	
	(when b
		(reset-game)
		(set game-state 1)))
			
(fn victory-menu [x y b]
	(rect 16 12 104 24 15)
	(rectb 16 12 104 24 3)
	(rectb 17 13 102 22 10)
	(rectb 18 14 100 20 3)
	(spr 336 20 16 -1 1 0 0 2 2)
	(print "VICTORY" 50 22 2)
	(spr 336 100 16 -1 1 1 0 2 2)
	(rect 48 44 41 40 15)
	(rectb 48 44 41 40 3)
	(rectb 49 45 39 38 10)
	(rectb 50 46 37 36 3)
	(spr 306 60 51 -1 1 0 0 2 2) 
	(print "AGAIN?" 52 74 2)
	(when b 
		(reset-game)
		(set game-state 1)))

(fn _G.TIC []
 (cls 14)
	(var (mx my m1 m3 m2 mh mv) (values (mouse)))
	(when (btnp 5) (set debug (not debug)))
 (rect 4 4 129 129 6)
 (rectb 3 3 130 130 0)
 (for [x 1 grid]
 	(for [y 1 grid]
   (var (rx ry) (values (* x 8) (* y 8)))
   (spr (mt (?. mines (mn x y))) rx ry 0 1)))
 (print "T" 140 6 10 false 2) 
 (print "I" 140 20 10 false 2)
 (print "C" 140 34 10 false 2)
 (spr 258 137 47 0 2)
 (print "s" 142 65 3 false 1)
 (print "w" 142 75 3 false 1)
 (print "e" 142 85 3 false 1)
 (print "e" 142 95 3 false 1)
 (print "p" 142 105 3 false 1)
 (print "e" 142 115 3 false 1)
 (print "r" 142 125 3 false 1)
	;Time
	;(line 158 10 235 10 0)
 (rect 158 4 78 23 15)
	(spr 312 162 8 -1 1 0 0 2 2)
 (rect 180 8 52 16 0)
 (rectb 180 8 53 16 13)
 (rectb 181 9 51 14 13)
 (print (string.format "%04d" ptime) 184 11 11 true 2)
	(line 158 28 235 28 0)
	;Grid
	(rect 158 31 38 37 15)
	(rect 159 33 36 11 0)
 (rectb 159 33 36 11 13)
 (rectb 160 34 34 9 13)
 (print (.. (string.format "%02d" grid) "x" (string.format "%02d" grid)) 162 36 11 true 1)
	(spr 340 169 48 -1 1 0 0 2 2)
	;Mines 
	(rect 198 31 38 37 15)
	(rect 204 33 25 11 0)
 (rectb 204 33 25 11 13)
 (rectb 205 34 23 9 13)
 (print (string.format "%03d" diff) 208 36 11 true 1)
	(spr 316 209 48 -1 1 0 0 2 2)
	;Digs
	(rect 158 71 38 37 15)
	(rect 164 73 25 11 0)
 (rectb 164 73 25 11 13)
 (rectb 165 74 23 9 13)
 (print (string.format "%03d" digs) 168 76 11 true 1)
	(spr 308 169 89 -1 1 0 0 2 2)
	;Flags
	(rect 198 71 38 37 15)
	(rect 204 73 25 11 0)
 (rectb 204 73 25 11 13)
 (rectb 205 74 23 9 13)
 (print (string.format "%03d" flags) 208 76 11 true 1)
	(spr 314 209 89 -1 1 0 0 2 2)
	;Controls
	(line 158 110 235 110 0)
 (rect 158 112 38 20 15)
	(spr 304 160 114 -1 1 0 0 2 2) 
	(spr 338 178 114 -1 1 0 0 2 2) 
 (rect 198 112 38 20 15)
	(spr 306 200 114 -1 1 0 0 2 2) 
	(spr 310 218 114 -1 1 0 0 2 2) 

 (when (= game-state 0)
 	(set toggle-dig-gate false)
 	(set toggle-flag-gate false)
 	(start-menu mx my m1))
  
	(when (= game-state 1)
 	(if (= (% gtime 60) 0) (set ptime (+ ptime 1)))
		(if (not m1) (set toggle-dig-gate true))
		(when m1 
			(if (in-bounds mx my)
				(do
				 (local square (mn (map-tile mx) (map-tile my)))
					(toggle-dig (?. mines square) true square))))
		(if (not m2) (set toggle-flag-gate true))
		(when m2 (if (in-bounds mx my) (toggle-flag (?. mines (mn (map-tile mx) (map-tile my))) true))))
	
	(when (= game-state 2)
 	(set toggle-dig-gate false)
 	(set toggle-flag-gate false)
  (set toggle-new-gate false)
 	(game-over-menu mx my m2))
  
 (when (= game-state 3)
 	(set toggle-dig-gate false)
 	(set toggle-flag-gate false)
  (victory-menu mx my m2))
  
 (set gtime (+ gtime 1))
 (show-debug mx my)
)