!^K/U      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTNone"#$%*7>@AHMPV_agkp,chessIOBlaw: square i x ! i = x where inRange (0,63) i && inRange (0,15) x0chessIOzMove a nibble. Note that this function, while convenient, isn't very fast as it needs to lookup the source nibble value.<chessIO bitwise XOR;  !"#$%&'()*+,-./0123456789:; !"#$%&'()/ *+,-.0123456789:;Basic data types and functions related to the game of chess(c) Mario Lang, 2019BSD3mlang@blind.guru experimentalNone"#$%&'*-7=>?@AHMPVX_agkp* SchessIO active colorUchessIOnumber of the full movechessIO=The starting position as given by the FEN string "rnbqkbnrpppppppp8888 PPPPPPPP/RNBQKBNR w KQkq - 0 1".chessIO3Construct a position from Forsyth-Edwards-Notation.chessIO/Convert a position to Forsyth-Edwards-Notation.chessIOJParse a move in the format used by the Universal Chess Interface protocol.chessIOLConvert a move to the format used by the Universal Chess Interface protocol.UchessIO<Validate that a certain move is legal in the given position.chessIO#Apply a move to the given position.[This function checks if the move is actually legal and throws and error if it isn't. See - for a version that omits the legality check.chessIOAn unsafe version of . Only use this if you are sure the given move can be applied to the position. This is useful if the move has been generated by the moves function.chessIO9Generate a list of possible moves for the given position.chessIOReturns V if # is in check in the given position.oMNOPQRTUSVZYkc[WX\]^_`abdefghijlmnopqrstuvwxyz{|}~oVZYkc[WX\]^_`abdefghijlmnopqrstuvwxyz{|}~MNORSUTPQNone"#$%*7>@AHMPV_agkp.None"#$%&'*7>@AHMPV_agkp0None"#$%*7>@AHMPVX_agkp4chessIOA Polyglot opening book.chessIO(Create a PolyglotBook from a ByteString.chessIO Pick a random ply from the book.chessIO:Probe the book for all plies known for the given position.  None"#$%*7>@AHMPV_agkpH<WchessIO+restrict search to the specified moves onlyXchessIO(time (in milliseconds) left on the clockYchessIO'time increment per move in millisecondsZchessIO(number of moves to the next time control[chessIO search until > gets called0chessIOWSet the starting position of the current game, also clearing any pre-existing history.1chessIOMStart a UCI engine with the given executable name and command line arguments.2chessIO=Start a UCI engine with the given timeout for initialisation._If the engine takes more then the given microseconds to answer to the initialisation request, \: is returned and the external process will be terminated.3chessIO5Wait until the engine is ready to take more commands.=chessIO'Instruct the engine to begin searching.>chessIOStop a search in progress.@chessIO(Set a spin option to a particular value.MBounds are validated. Make sure you don't set a value which is out of range.BchessIO7Return the final position of the currently active game.CchessIOAdd a Move to the game history.AThis function checks if the move is actually legal, and throws a * if it isn't.DchessIOQuit the engine.0chessIOthe game previously in progress<    )" !#$%&'(*+,/.-0123456789:;<=>?@ABCDE<*+,-.12   /?@A3B0C)" !#$%&'(=< 456789:;>DENone"#$%*7>@AHMPV_agkpK ]^_`abcde      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn&chessIO-0.3.1.2-DEnm8UNkfyfK1qoB5Lr8EFGame.Chess.QuadBitboard Game.ChessGame.Chess.Polyglot.HashGame.Chess.PGNGame.Chess.Polyglot.BookGame.Chess.UCI Paths_chessIOWord4W4 QuadBitboardQBBblackpbqnbkrqk BlackKing BlackQueen BlackRook BlackBishop BlackKnight BlackPawn WhiteKing WhiteQueen WhiteRook WhiteBishop WhiteKnight WhitePawnNoPieceoccupiedpnrwhitepawnsknightsbishopsrooksqueenskingswPawnswKnightswBishopswRookswQueenswKingsbPawnsbKnightsbBishopsbRooksbQueensbKingsemptystandardsquare! setNibbletoStringmovemove'whiteKingsideCastlewhiteQueensideCastleblackKingsideCastleblackQueensideCastle enPassantwhitePromotionblackPromotionwhitePromotion'blackPromotion'$fShowQuadBitboard$fSemigroupQuadBitboard$fMonoidQuadBitboard$fIsStringQuadBitboard$fBinaryQuadBitboard$fFiniteBitsWord4 $fEnumWord4$fBoundedWord4$fEqQuadBitboard $fBitsWord4 $fEqWord4$fIntegralWord4 $fIxWord4 $fNumWord4 $fOrdWord4 $fReadWord4 $fRealWord4 $fShowWord4CastleKingside QueensidePlyPositioncolor halfMoveClock moveNumberSqA1B1C1D1E1F1G1H1A2B2C2D2E2F2G2H2A3B3C3D3E3F3G3H3A4B4C4D4E4F4G4H4A5B5C5D5E5F5G5H5A6B6C6D6E6F6G6H6A7B7C7D7E7F7G7H7A8B8C8D8E8F8G8H8ColorBlackWhite PieceTypePawnKnightBishopRookQueenKing positionTreepositionForest plyForestplyTree strictSAN relaxedSANfromSANtoSAN unsafeToSANstartpospieceAtopponentisDarkisLightfromFENtoFEN fromPolyglot toPolyglotfromUCItoUCIdoPly unsafeDoPly legalPliesinCheckcastlingRightscanCastleKingsidecanCastleQueenside$fSANTokenWord8$fSANTokenChar $fIsSquareInt $fIsSquareSq $fEqPosition $fShowPly $fShowFrom $fEqSANStatus$fReadSANStatus$fShowSANStatus $fEqPieceType $fIxPieceType$fOrdPieceType$fShowPieceType $fEqColor $fIxColor $fOrdColor $fShowColor $fEqPiece $fShowPiece $fBoundedSq$fEnumSq$fEqSq$fIxSq$fOrdSq$fShowSq$fEqPly $fEqCastle $fIxCastle $fOrdCastle $fShowCastle $fEqDirection$fShowDirection hashPositionpieceKey castleKeyepKeysturnKeyRAVOrderOutcomeWinDraw UndecidedGamePGNgameFromForest readPGNFilehPutPGN breadthFirst depthFirstpgnDocgameDocweightedForest$fPrettyOutcome $fEqOutcome $fShowOutcome $fEqPlyData $fShowPlyData$fEqPGN $fMonoidPGN$fSemigroupPGN PolyglotBook defaultBooktwicfromByteString toByteStringreadPolyglotFilewritePolyglotFile bookForestbookPly bookPlies findPosition$fStorableBookEntry$fOrdBookEntry $fEqBookEntry$fShowBookEntry$fEqPolyglotBook SearchParamOptionCheckBoxComboBox SpinButtonOStringButton comboBoxValuecomboBoxValuesspinButtonValuespinButtonMinBoundspinButtonMaxBoundBounds UpperBound LowerBoundScore CentiPawnsMateInInfoPVDepthSelDepthElapsedMultiPVNodesNPSTBHitsHashFullCurrMoveCurrMoveNumberString UCIException IllegalMoveEnginenameauthoroptions setPositionstartstart'isready searchmovestimeleft timeincrement movestogomovetimenodesdepthinfinite searchingsearchstop getOptionsetOptionSpinButtonsetOptionStringcurrentPositionaddPlyquitquit'$fExceptionUCIException$fIsStringOption$fShowUCIException $fEqScore $fOrdScore $fShowScore $fEqBounds $fShowBounds$fEqInfo $fShowInfo $fEqOption $fShowOption $fShowCommand$fEqSearchParam$fShowSearchParam relativeToghc-prim GHC.TypesTrue SearchMovesTimeLeft TimeIncrement MovesToGoInfinitebase GHC.MaybeNothingversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName